Skip to content

Commit 9d653cd

Browse files
jeremypwzeebokleonardo-lemos
authored
Fix regressions in search bar behaviour (#1551)
* Do not overwrite search term if being edited * Force selection of text after focus in * Ensure search term set before revealing search bar. --------- Co-authored-by: Ryan Kornheisl <ryan@skarva.tech> Co-authored-by: Leonardo Lemos <leonardolemos@live.com>
1 parent d23410b commit 9d653cd

2 files changed

Lines changed: 21 additions & 8 deletions

File tree

src/MainWindow.vala

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -749,7 +749,13 @@ namespace Scratch {
749749

750750
// If selected text covers more than one line return just the first.
751751
public void set_selected_text_for_search () {
752+
// Do not overwrite search term if we are editing the entry.
753+
if (search_bar.is_focused) {
754+
return;
755+
}
756+
752757
var doc = get_current_document ();
758+
753759
var selected_text = doc != null ? doc.get_selected_text (false) : "";
754760
var search_term = "";
755761
if (selected_text.contains ("\n")) {
@@ -1186,19 +1192,21 @@ namespace Scratch {
11861192
}
11871193

11881194
private void find (string search_term = "") {
1195+
// Set search term before focusing search bar else maybe ineffective
1196+
if (search_term != "") {
1197+
search_bar.set_search_entry_text (search_term);
1198+
} else {
1199+
set_selected_text_for_search ();
1200+
}
1201+
11891202
if (!search_bar.is_revealed) {
11901203
var show_find_action = Utils.action_from_group (ACTION_TOGGLE_SHOW_FIND, actions);
11911204
if (show_find_action.enabled) {
1205+
// This focuses the search bar
11921206
show_find_action.activate (new Variant ("b", true));
11931207
}
11941208
}
11951209

1196-
if (search_term != "") {
1197-
search_bar.set_search_entry_text (search_term);
1198-
} else {
1199-
set_selected_text_for_search ();
1200-
}
1201-
12021210
search_bar.search ();
12031211
}
12041212

src/Widgets/SearchBar.vala

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -357,8 +357,13 @@ namespace Scratch.Widgets {
357357
return false;
358358
}
359359

360-
update_search_widgets ();
361-
return false;
360+
Idle.add (() => {
361+
update_search_widgets ();
362+
search_entry.select_region (0, -1);
363+
return Source.REMOVE;
364+
});
365+
366+
return Gdk.EVENT_PROPAGATE;
362367
}
363368

364369
public bool search () {

0 commit comments

Comments
 (0)