diff --git a/src/gtr-application.c b/src/gtr-application.c index 864708953143f590c50e45271edea0d6a3ea1ed1..2d7aeb3b0c8affc078d95118b5e913c4f1bdcd41 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 b7fc38bc1ff760f5aaeee7df45f47b69699d9f74..c364f491dd64e2f7358911944435be26f86f1f00 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 b22d2355c261ab6220ac55470fd47c023fb1dd7d..2cd2135d83ebae71f7f3f09447815b52a81e7022 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 57c7e8e48d8113e57f8c948f6590364f612fe9e9..3f71c49a280fa09ac28263deca9d9c12b89a79a3 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 e3aea6f5521994cd59df61d65849073995d2f54d..954955d2db87d987ec1193cbd55b3964927a0609 100644 --- a/src/gtr-window.c +++ b/src/gtr-window.c @@ -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 36efb4de0c33e6fb910b82e929f72eb3a21db432..d40517f853be0d85b3205019b2ef3888b8bf34db 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 **/