From 7704d0d36585c5a1e8b6fc22bdfe77417af12c20 Mon Sep 17 00:00:00 2001
From: Kevin <92656833+kevinthegreat1@users.noreply.github.com>
Date: Fri, 26 Jul 2024 15:15:26 +0800
Subject: Fix empty categories being checked (#851)

---
 .../hysky/skyblocker/skyblock/waypoint/WaypointsListWidget.java   | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

(limited to 'src/main/java')

diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsListWidget.java
index f4b54342..99716bc4 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsListWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsListWidget.java
@@ -85,7 +85,7 @@ public class WaypointsListWidget extends ElementListWidget<WaypointsListWidget.A
 
     void updateButtons() {
         for (Entry<AbstractWaypointEntry> entry : children()) {
-            if (entry instanceof WaypointCategoryEntry categoryEntry && categoryEntry.enabled.isChecked() != categoryEntry.category.waypoints().stream().allMatch(screen::isEnabled)) {
+            if (entry instanceof WaypointCategoryEntry categoryEntry && categoryEntry.enabled.isChecked() != categoryEntry.shouldBeChecked()) {
                 ((CheckboxWidgetAccessor) categoryEntry.enabled).setChecked(!categoryEntry.enabled.isChecked());
             } else if (entry instanceof WaypointEntry waypointEntry && waypointEntry.enabled.isChecked() != screen.isEnabled(waypointEntry.waypoint)) {
                 waypointEntry.enabled.onPress();
@@ -114,7 +114,7 @@ public class WaypointsListWidget extends ElementListWidget<WaypointsListWidget.A
 
         public WaypointCategoryEntry(WaypointCategory category) {
             this.category = category;
-            enabled = CheckboxWidget.builder(Text.literal(""), client.textRenderer).checked(!category.waypoints().isEmpty() && category.waypoints().stream().allMatch(screen::isEnabled)).callback((checkbox, checked) -> category.waypoints().forEach(waypoint -> screen.enabledChanged(waypoint, checked))).build();
+            enabled = CheckboxWidget.builder(Text.literal(""), client.textRenderer).checked(shouldBeChecked()).callback((checkbox, checked) -> category.waypoints().forEach(waypoint -> screen.enabledChanged(waypoint, checked))).build();
             nameField = new TextFieldWidget(client.textRenderer, 70, 20, Text.literal("Name"));
             nameField.setText(category.name());
             nameField.setChangedListener(this::updateName);
@@ -153,6 +153,10 @@ public class WaypointsListWidget extends ElementListWidget<WaypointsListWidget.A
             return children;
         }
 
+        private boolean shouldBeChecked() {
+            return !category.waypoints().isEmpty() && category.waypoints().stream().allMatch(screen::isEnabled);
+        }
+
         private void updateName(String name) {
             int index = waypoints.indexOf(category);
             category = category.withName(name);
-- 
cgit