From 9e1fb6e741bd9938365a8751cce274af54f2d463 Mon Sep 17 00:00:00 2001 From: Kevin <92656833+kevinthegreat1@users.noreply.github.com> Date: Sun, 21 Apr 2024 16:10:35 -0400 Subject: Fix delete shortcut by keeping ShortcutsConfigListWidget instance across initializations and updating text field positions (#660) --- .../shortcut/ShortcutsConfigListWidget.java | 18 +++++++++-- .../skyblock/shortcut/ShortcutsConfigScreen.java | 35 ++++++++++++++-------- 2 files changed, 38 insertions(+), 15 deletions(-) (limited to 'src/main') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/shortcut/ShortcutsConfigListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/shortcut/ShortcutsConfigListWidget.java index df5c4de1..aa3b976e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/shortcut/ShortcutsConfigListWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/shortcut/ShortcutsConfigListWidget.java @@ -70,6 +70,12 @@ public class ShortcutsConfigListWidget extends ElementListWidget children().add(children().indexOf(getSelectedOrNull()) + 1, new ShortcutEntry(category))); } + protected void updatePositions() { + for (AbstractShortcutEntry child : children()) { + child.updatePositions(); + } + } + @Override protected boolean removeEntry(AbstractShortcutEntry entry) { return super.removeEntry(entry); @@ -90,10 +96,11 @@ public class ShortcutsConfigListWidget extends ElementListWidget { + public static abstract class AbstractShortcutEntry extends ElementListWidget.Entry { + protected void updatePositions() {} } - private class ShortcutCategoryEntry extends AbstractShortcutEntry { + protected class ShortcutCategoryEntry extends AbstractShortcutEntry { private final Map shortcutsMap; private final Text targetName; private final Text replacementName; @@ -236,5 +243,12 @@ public class ShortcutsConfigListWidget extends ElementListWidget { if (client != null && shortcutsConfigListWidget.getSelectedOrNull() instanceof ShortcutsConfigListWidget.ShortcutEntry shortcutEntry) { scrollAmount = shortcutsConfigListWidget.getScrollAmount(); - client.setScreen(new ConfirmScreen(this::deleteEntry, Text.translatable("skyblocker.shortcuts.deleteQuestion"), Text.translatable("skyblocker.shortcuts.deleteWarning", shortcutEntry), Text.translatable("selectServer.deleteButton"), ScreenTexts.CANCEL)); + client.setScreen(new ConfirmScreen(this::deleteEntry, Text.translatable("skyblocker.shortcuts.deleteQuestion"), Text.stringifiedTranslatable("skyblocker.shortcuts.deleteWarning", shortcutEntry), Text.translatable("selectServer.deleteButton"), ScreenTexts.CANCEL)); } }).build(); adder.add(buttonDelete); @@ -86,16 +93,18 @@ public class ShortcutsConfigScreen extends Screen { @Override public void close() { - if (client != null && shortcutsConfigListWidget.hasChanges()) { - client.setScreen(new ConfirmScreen(confirmedAction -> { - if (confirmedAction) { - this.client.setScreen(parent); - } else { - client.setScreen(this); - } - }, Text.translatable("text.skyblocker.quit_config"), Text.translatable("text.skyblocker.quit_config_sure"), Text.translatable("text.skyblocker.quit_discard"), ScreenTexts.CANCEL)); - } else { - this.client.setScreen(parent); + if (client != null) { + if (shortcutsConfigListWidget.hasChanges()) { + client.setScreen(new ConfirmScreen(confirmedAction -> { + if (confirmedAction) { + this.client.setScreen(parent); + } else { + client.setScreen(this); + } + }, Text.translatable("text.skyblocker.quit_config"), Text.translatable("text.skyblocker.quit_config_sure"), Text.translatable("text.skyblocker.quit_discard"), ScreenTexts.CANCEL)); + } else { + this.client.setScreen(parent); + } } } -- cgit