From f9d636c94596d8701b9ddc334a440d01135f2dea Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Sun, 20 Apr 2025 17:39:53 +0100 Subject: [PATCH 1/3] Do not overwrite search term if being edited --- src/MainWindow.vala | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 078184b66..a859692bd 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -739,7 +739,13 @@ namespace Scratch { // If selected text covers more than one line return just the first. public void set_selected_text_for_search () { + // Do not overwrite search term if we are editing the entry. + if (search_bar.is_focused) { + return; + } + var doc = get_current_document (); + var selected_text = doc != null ? doc.get_selected_text (false) : ""; var search_term = ""; if (selected_text.contains ("\n")) { From b038642e4c84c668202f8b5411b50aefa214a187 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Sun, 20 Apr 2025 18:25:16 +0100 Subject: [PATCH 2/3] Force selection of text after focus in --- src/Widgets/SearchBar.vala | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Widgets/SearchBar.vala b/src/Widgets/SearchBar.vala index 56a718631..fe2e2c262 100644 --- a/src/Widgets/SearchBar.vala +++ b/src/Widgets/SearchBar.vala @@ -355,8 +355,13 @@ namespace Scratch.Widgets { return false; } - update_search_widgets (); - return false; + Idle.add (() => { + update_search_widgets (); + search_entry.select_region (0, -1); + return Source.REMOVE; + }); + + return Gdk.EVENT_PROPAGATE; } public bool search () { From dc390ebcf9e8faf67631bd01d95de89871919b42 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Sun, 20 Apr 2025 18:31:20 +0100 Subject: [PATCH 3/3] Ensure search term set before revealing search bar. --- src/MainWindow.vala | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index a859692bd..03977376f 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -1181,19 +1181,21 @@ namespace Scratch { } private void find (string search_term = "") { + // Set search term before focusing search bar else maybe ineffective + if (search_term != "") { + search_bar.set_search_entry_text (search_term); + } else { + set_selected_text_for_search (); + } + if (!search_bar.is_revealed) { var show_find_action = Utils.action_from_group (ACTION_TOGGLE_SHOW_FIND, actions); if (show_find_action.enabled) { + // This focuses the search bar show_find_action.activate (new Variant ("b", true)); } } - if (search_term != "") { - search_bar.set_search_entry_text (search_term); - } else { - set_selected_text_for_search (); - } - search_bar.search (); }