From 0137ff6f2c66f458c0bbcbdd649515b938c43ec5 Mon Sep 17 00:00:00 2001 From: Amrit Borah Date: Fri, 1 Apr 2022 12:31:39 +0530 Subject: [PATCH 1/3] now focuses on search entry if already shown --- src/gtr-application.c | 8 ++++---- src/gtr-search-bar.c | 6 ++++++ src/gtr-tab.c | 14 ++++++++++++++ src/gtr-tab.h | 1 + src/gtr-window.c | 17 ++++++++++++++++- src/gtr-window.h | 2 +- 6 files changed, 42 insertions(+), 6 deletions(-) diff --git a/src/gtr-application.c b/src/gtr-application.c index 86470895..2d7aeb3b 100644 --- a/src/gtr-application.c +++ b/src/gtr-application.c @@ -263,7 +263,7 @@ find_activated (GSimpleAction *action, GtrTab *active_tab = gtr_window_get_active_tab (priv->active_window); g_return_if_fail (active_tab != NULL); - gtr_window_show_search_bar (priv->active_window, TRUE); + gtr_window_show_focus_search_bar (priv->active_window, TRUE); gtr_tab_find_set_replace (active_tab, FALSE); } @@ -277,7 +277,7 @@ find_next_activated (GSimpleAction *action, GtrTab *active_tab = gtr_window_get_active_tab (priv->active_window); g_return_if_fail (active_tab != NULL); - gtr_window_show_search_bar (priv->active_window, TRUE); + gtr_window_show_focus_search_bar (priv->active_window, TRUE); gtr_tab_find_next (active_tab); } @@ -291,7 +291,7 @@ find_prev_activated (GSimpleAction *action, GtrTab *active_tab = gtr_window_get_active_tab (priv->active_window); g_return_if_fail (active_tab != NULL); - gtr_window_show_search_bar (priv->active_window, TRUE); + gtr_window_show_focus_search_bar (priv->active_window, TRUE); gtr_tab_find_prev (active_tab); } @@ -304,7 +304,7 @@ find_and_replace_activated (GSimpleAction *action, GtrApplicationPrivate *priv = gtr_application_get_instance_private (app); GtrTab *active_tab = gtr_window_get_active_tab (priv->active_window); - gtr_window_show_search_bar (priv->active_window, TRUE); + gtr_window_show_focus_search_bar (priv->active_window, TRUE); gtr_tab_find_set_replace (active_tab, TRUE); } diff --git a/src/gtr-search-bar.c b/src/gtr-search-bar.c index b7fc38bc..c364f491 100644 --- a/src/gtr-search-bar.c +++ b/src/gtr-search-bar.c @@ -742,3 +742,9 @@ gtr_search_bar_set_found (GtrSearchBar *self, gtk_style_context_add_class (context, "error"); } +/* Previously, declared but unimplemented */ +GtkSearchEntry * +gtr_search_bar_get_search (GtrSearchBar *self) +{ + return (GtkSearchEntry *) self->search_entry; +} \ No newline at end of file diff --git a/src/gtr-tab.c b/src/gtr-tab.c index b22d2355..2cd2135d 100644 --- a/src/gtr-tab.c +++ b/src/gtr-tab.c @@ -168,6 +168,20 @@ gtr_page_stop_search (GtrTab *tab, } +void +gtr_tab_focus_search_bar (GtrTab *tab) +{ + GtrTabPrivate *priv; + GtkEntry *entry; + + g_assert (GTR_IS_TAB (tab)); + priv = gtr_tab_get_instance_private (tab); + + entry = (GtkEntry *) gtr_search_bar_get_search (priv->search_bar); + + gtk_entry_grab_focus_without_selecting (entry); +} + void gtr_tab_show_hide_search_bar (GtrTab *tab, gboolean show) { diff --git a/src/gtr-tab.h b/src/gtr-tab.h index 57c7e8e4..3f71c49a 100644 --- a/src/gtr-tab.h +++ b/src/gtr-tab.h @@ -162,6 +162,7 @@ void gtr_tab_sort_by (GtrTab *tab, GtrMessageTableSortBy sort); void gtr_tab_find_replace (GtrTab *tab, gboolean set); +void gtr_tab_focus_search_bar (GtrTab *tab); void gtr_tab_show_hide_search_bar (GtrTab * tab, gboolean show); void gtr_tab_find_next (GtrTab * tab); void gtr_tab_find_prev (GtrTab * tab); diff --git a/src/gtr-window.c b/src/gtr-window.c index e3aea6f5..d55f802f 100644 --- a/src/gtr-window.c +++ b/src/gtr-window.c @@ -915,7 +915,7 @@ gtr_window_hide_sort_menu (GtrWindow *window) void gtr_window_show_search_bar (GtrWindow *window, - gboolean show) + gboolean show) { GtrWindowPrivate *priv = gtr_window_get_instance_private (window); GtrNotebook *notebook = GTR_NOTEBOOK (priv->notebook); @@ -929,6 +929,21 @@ gtr_window_show_search_bar (GtrWindow *window, priv->search_bar_shown = show; } +// Shortcut for find now calls this +void +gtr_window_show_focus_search_bar (GtrWindow *window, + gboolean show) +{ + GtrWindowPrivate *priv = gtr_window_get_instance_private (window); + GtrTab *tab = gtr_window_get_active_tab (window); + + // don't need to show if already shown but need to focus on entry + if (tab != NULL && priv->search_bar_shown == show) + gtr_tab_focus_search_bar (tab); + else + gtr_window_show_search_bar (window, show); +} + void gtr_window_toggle_search_bar (GtrWindow *window) { diff --git a/src/gtr-window.h b/src/gtr-window.h index 36efb4de..d40517f8 100644 --- a/src/gtr-window.h +++ b/src/gtr-window.h @@ -80,7 +80,7 @@ void gtr_window_tm_keybind (GtrWindow *window, GSimpleAction *action); void gtr_window_hide_sort_menu (GtrWindow *window); -void gtr_window_show_search_bar (GtrWindow *window, gboolean show); +void gtr_window_show_focus_search_bar (GtrWindow *window, gboolean show); void gtr_window_toggle_search_bar (GtrWindow *window); /** stack app states **/ -- GitLab From 901b21fd8c540759a89eb9166cc6be858e287dfa Mon Sep 17 00:00:00 2001 From: Daniel Garcia Moreno Date: Sat, 2 Apr 2022 17:48:04 +0000 Subject: [PATCH 2/3] Correction in indentation --- src/gtr-window.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gtr-window.c b/src/gtr-window.c index d55f802f..ac5aab50 100644 --- a/src/gtr-window.c +++ b/src/gtr-window.c @@ -915,7 +915,7 @@ gtr_window_hide_sort_menu (GtrWindow *window) void gtr_window_show_search_bar (GtrWindow *window, - gboolean show) + gboolean show) { GtrWindowPrivate *priv = gtr_window_get_instance_private (window); GtrNotebook *notebook = GTR_NOTEBOOK (priv->notebook); -- GitLab From 5e696790679af51828544e5699b41afc85517551 Mon Sep 17 00:00:00 2001 From: Daniel Garcia Moreno Date: Sat, 2 Apr 2022 17:49:13 +0000 Subject: [PATCH 3/3] Correction in indentation in gtr-window.c --- src/gtr-window.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gtr-window.c b/src/gtr-window.c index ac5aab50..954955d2 100644 --- a/src/gtr-window.c +++ b/src/gtr-window.c @@ -932,7 +932,7 @@ gtr_window_show_search_bar (GtrWindow *window, // Shortcut for find now calls this void gtr_window_show_focus_search_bar (GtrWindow *window, - gboolean show) + gboolean show) { GtrWindowPrivate *priv = gtr_window_get_instance_private (window); GtrTab *tab = gtr_window_get_active_tab (window); -- GitLab