From 044153d5e061ff31e0557ab96e9837f3b786a8e6 Mon Sep 17 00:00:00 2001 From: ninjaguardian <110734253+ninjaguardian@users.noreply.github.com> Date: Sat, 1 Aug 2026 00:23:12 -0500 Subject: [PATCH] Fix color lists --- .../yacl3/gui/controllers/ListEntryWidget.java | 17 ++++++++++++++--- .../dev/isxander/yacl3/test/ConfigTest.java | 2 ++ .../java/dev/isxander/yacl3/test/GuiTest.java | 10 ++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/isxander/yacl3/gui/controllers/ListEntryWidget.java b/src/main/java/dev/isxander/yacl3/gui/controllers/ListEntryWidget.java index 10ae4572..74e6731f 100644 --- a/src/main/java/dev/isxander/yacl3/gui/controllers/ListEntryWidget.java +++ b/src/main/java/dev/isxander/yacl3/gui/controllers/ListEntryWidget.java @@ -25,7 +25,7 @@ public class ListEntryWidget extends AbstractWidget implements ContainerEventHan private final String optionNameString; - private GuiEventListener focused; + @Nullable private GuiEventListener focused; private boolean dragging; public ListEntryWidget(YACLScreen screen, ListOptionEntry listOptionEntry, AbstractWidget entryWidget) { @@ -87,7 +87,7 @@ protected void updateButtonStates() { @Override public void unfocus() { - entryWidget.unfocus(); + setFocused(null); } @Override @@ -123,9 +123,20 @@ public GuiEventListener getFocused() { @Override public void setFocused(@Nullable GuiEventListener focused) { - this.focused = focused; + if (this.focused != focused) { + if (this.focused != null) + this.focused.setFocused(false); + + if (focused != null) + focused.setFocused(true); + + this.focused = focused; + } } + @Override + public void setFocused(boolean focused) {} + //? if >=1.21.11 { @Override public boolean mouseClicked(net.minecraft.client.input.MouseButtonEvent mouseButtonEvent, boolean doubleClick) { diff --git a/src/testmod/java/dev/isxander/yacl3/test/ConfigTest.java b/src/testmod/java/dev/isxander/yacl3/test/ConfigTest.java index 9c5f8d6e..852cad99 100644 --- a/src/testmod/java/dev/isxander/yacl3/test/ConfigTest.java +++ b/src/testmod/java/dev/isxander/yacl3/test/ConfigTest.java @@ -65,6 +65,8 @@ public class ConfigTest { @SerialEntry public ChatFormatting formattingOption = ChatFormatting.RED; + @SerialEntry + public List colorList = List.of(Color.red, Color.green, Color.blue); @SerialEntry public List stringList = List.of("This is quite cool.", "You can add multiple items!", "And it is integrated so well into Option groups!"); @SerialEntry diff --git a/src/testmod/java/dev/isxander/yacl3/test/GuiTest.java b/src/testmod/java/dev/isxander/yacl3/test/GuiTest.java index 2859f3a1..7dc4b8a3 100644 --- a/src/testmod/java/dev/isxander/yacl3/test/GuiTest.java +++ b/src/testmod/java/dev/isxander/yacl3/test/GuiTest.java @@ -324,6 +324,16 @@ private static Screen getFullTestSuite(Screen parent) { .build()) .category(ConfigCategory.createBuilder() .name(Component.literal("List Test")) + .group(ListOption.createBuilder() + .name(Component.literal("Color List")) + .binding( + defaults.colorList, + () -> config.colorList, + val -> config.colorList = val + ) + .controller(ColorControllerBuilder::create) + .initial(Color.white) + .build()) .group(ListOption.createBuilder() .name(Component.literal("String List")) .binding(