瀏覽代碼

Fix More List Bugs

- Finish making reset button behavior consistent
- Fix #54
PepperBell 4 年之前
父節點
當前提交
067b337b37

+ 1 - 0
src/main/java/me/shedaniel/clothconfig2/gui/entries/AbstractTextFieldListListEntry.java

@@ -64,6 +64,7 @@ public abstract class AbstractTextFieldListListEntry<T, C extends AbstractTextFi
             widget.setMaxLength(Integer.MAX_VALUE);
             widget.setHasBorder(false);
             widget.setText(Objects.toString(finalValue));
+            widget.setCursorToStart();
             widget.setChangedListener(s -> {
                 widget.setEditableColor(getPreferredTextColor());
             });

+ 17 - 1
src/main/java/me/shedaniel/clothconfig2/gui/entries/BaseListEntry.java

@@ -23,6 +23,7 @@ import org.jetbrains.annotations.Nullable;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.function.Consumer;
 import java.util.function.Function;
@@ -105,6 +106,21 @@ public abstract class BaseListEntry<T, C extends BaseListCell, SELF extends Base
         return false;
     }
     
+    public boolean isMatchDefault() {
+        Optional<List<T>> defaultValueOptional = getDefaultValue();
+        if (defaultValueOptional.isPresent()) {
+            List<T> value = getValue();
+            List<T> defaultValue = defaultValueOptional.get();
+            if (value.size() != defaultValue.size()) return false;
+            for (int i = 0; i < value.size(); i++) {
+                if (!Objects.equals(value.get(i), defaultValue.get(i)))
+                    return false;
+            }
+            return true;
+        }
+        return false;
+    }
+    
     @Override
     public boolean isRequiresRestart() {
         return cells.stream().anyMatch(BaseListCell::isRequiresRestart);
@@ -238,7 +254,7 @@ public abstract class BaseListEntry<T, C extends BaseListCell, SELF extends Base
             drawTexture(matrices, x - 15 + 26, y + 5, 24 + 27, focused == null ? 0 : insideDelete ? 18 : 9, 9, 9);
         resetWidget.x = x + entryWidth - resetWidget.getWidth();
         resetWidget.y = y;
-        resetWidget.active = isEdited() && getDefaultValue().isPresent();
+        resetWidget.active = isEditable() && getDefaultValue().isPresent() && !isMatchDefault();
         resetWidget.render(matrices, mouseX, mouseY, delta);
         MinecraftClient.getInstance().textRenderer.drawWithShadow(matrices, getDisplayedFieldName().method_30937(), isDeleteButtonEnabled() ? x + 24 : x + 24 - 9, y + 6, labelWidget.rectangle.contains(mouseX, mouseY) && !resetWidget.isMouseOver(mouseX, mouseY) && !insideDelete && !insideCreateNew ? 0xffe6fe16 : getPreferredTextColor());
         if (expanded) {