From a1e7a7ee9f7151c2ee98591a44f45837eff35da3 Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Mon, 22 Dec 2025 02:22:27 +0200 Subject: [PATCH] Improved undo/redo for new cached multi-tab script areas --- .../noppes/npcs/client/gui/util/GuiScriptTextArea.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java b/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java index b2e2db859..65052cd09 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java @@ -924,6 +924,7 @@ public class GuiScriptTextArea extends GuiNpcTextField { private void initializeKeyBindings() { // Helper: execute action only if text area is active and enabled Supplier isActive = () -> active && isEnabled() && !KEYS_OVERLAY.showOverlay; + Supplier openBoxes = () -> !KEYS_OVERLAY.showOverlay; // CUT: Copy selection to clipboard and delete it. If no selection, cut the current sentence. KEYS.CUT.setTask(e -> { @@ -1006,7 +1007,7 @@ public class GuiScriptTextArea extends GuiNpcTextField { // UNDO: Restore last edit from undo list // Works in search bar. KEYS.UNDO.setTask(e -> { - if ((!e.isPress() && !e.isHold()) || !isActive.get() && !searchBar.isVisible()) + if ((!e.isPress() && !e.isHold()) || !openBoxes.get()) return; if (searchBar.hasFocus()) { @@ -1022,13 +1023,15 @@ public class GuiScriptTextArea extends GuiNpcTextField { undoing = false; scrollToCursor(); searchBar.updateMatches(); + if (!active) + active = true; } }); // REDO: Restore last undone edit from redo list // Works in search bar. KEYS.REDO.setTask(e -> { - if ((!e.isPress() && !e.isHold()) || !isActive.get() && !searchBar.isVisible()) + if ((!e.isPress() && !e.isHold()) || !openBoxes.get()) return; if (searchBar.hasFocus()) { @@ -1044,6 +1047,8 @@ public class GuiScriptTextArea extends GuiNpcTextField { undoing = false; scrollToCursor(); searchBar.updateMatches(); + if (!active) + active = true; } }); @@ -1108,7 +1113,6 @@ public class GuiScriptTextArea extends GuiNpcTextField { // Check if can open just for SearchReplaceBar and GoToLine - Supplier openBoxes = () -> !KEYS_OVERLAY.showOverlay; // SEARCH: Open search bar (Ctrl+R) // Works in search bar.