From 8514b9f9809856ff2eff1fe8eca65908add2129f Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Sat, 20 Dec 2025 02:02:43 +0200 Subject: [PATCH] Search bar now auto-opens on highlighted word --- .../client/gui/util/GuiScriptTextArea.java | 16 +++++++++------ .../gui/util/script/SearchReplaceBar.java | 20 +++++++++---------- 2 files changed, 20 insertions(+), 16 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 ba63f5e09..f5f79ed0d 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java @@ -51,6 +51,7 @@ public class GuiScriptTextArea extends GuiNpcTextField { // ==================== TEXT & CONTAINER ==================== public String text = null; + public String highlightedWord; private JavaTextContainer container = null; private boolean enableCodeHighlighting = false; @@ -89,6 +90,10 @@ public class GuiScriptTextArea extends GuiNpcTextField { return GuiScriptTextArea.this.text; } + public String getHighlightedWord() { + return GuiScriptTextArea.this.highlightedWord; + } + @Override public void setText(String newText) { GuiScriptTextArea.this.setText(newText); @@ -263,8 +268,7 @@ public class GuiScriptTextArea extends GuiNpcTextField { drawRect(x - 1, y - 1, x + width + 1, y + height + 1, 0xffa0a0a0); int searchHeight = searchBar.getTotalHeight(); - y += searchHeight; - height -= searchHeight; + // Draw line number gutter background drawRect(x, y, x + LINE_NUMBER_GUTTER_WIDTH, y + height, 0xff000000); @@ -356,12 +360,12 @@ public class GuiScriptTextArea extends GuiNpcTextField { } } - String wordHightLight = null; + highlightedWord = null; if (selection.hasSelection()) { Matcher m = container.regexWord.matcher(text); while (m.find()) { if (m.start() == selection.getStartSelection() && m.end() == selection.getEndSelection()) { - wordHightLight = text.substring(selection.getStartSelection(), selection.getEndSelection()); + highlightedWord = text.substring(selection.getStartSelection(), selection.getEndSelection()); } } } @@ -429,10 +433,10 @@ public class GuiScriptTextArea extends GuiNpcTextField { } } //Highlight words - if (wordHightLight != null) { + if (highlightedWord != null) { Matcher m = container.regexWord.matcher(line); while (m.find()) { - if (line.substring(m.start(), m.end()).equals(wordHightLight)) { + if (line.substring(m.start(), m.end()).equals(highlightedWord)) { int s = ClientProxy.Font.width(line.substring(0, m.start())); int e = ClientProxy.Font.width(line.substring(0, m.end())) + 1; drawRect(x + LINE_NUMBER_GUTTER_WIDTH + 1 + s, posY, x + LINE_NUMBER_GUTTER_WIDTH + 1 + e, posY + container.lineHeight, 0x99004c00); diff --git a/src/main/java/noppes/npcs/client/gui/util/script/SearchReplaceBar.java b/src/main/java/noppes/npcs/client/gui/util/script/SearchReplaceBar.java index bab0de897..9308f55d5 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/SearchReplaceBar.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/SearchReplaceBar.java @@ -99,6 +99,8 @@ public class SearchReplaceBar { */ public interface SearchCallback { String getText(); + + String getHighlightedWord(); void setText(String text); void scrollToPosition(int position); void setSelection(int start, int end); @@ -134,11 +136,17 @@ public class SearchReplaceBar { showReplace = false; searchFieldFocused = true; replaceFieldFocused = false; + if (callback != null) { + callback.unfocusMainEditor(); + String highlight = callback.getHighlightedWord(); + if (highlight != null) { + searchText = highlight; + } + } searchSelectionStart = 0; searchSelectionEnd = searchText.length(); searchCursor = searchText.length(); markActivity(); - if (callback != null) callback.unfocusMainEditor(); updateMatches(); } @@ -146,16 +154,8 @@ public class SearchReplaceBar { * Open search+replace bar (Ctrl+Shift+R) */ public void openSearchReplace() { - visible = true; showReplace = true; - searchFieldFocused = true; - replaceFieldFocused = false; - searchSelectionStart = 0; - searchSelectionEnd = searchText.length(); - searchCursor = searchText.length(); - markActivity(); - if (callback != null) callback.unfocusMainEditor(); - updateMatches(); + openSearch(); } /**