[gnome-software] Ensure the search text is showing when going back to search results
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Ensure the search text is showing when going back to search results
- Date: Wed, 31 Aug 2016 09:52:56 +0000 (UTC)
commit 60b909fda88e8960ab4b642ed27089b9bfabc02f
Author: Richard Hughes <richard hughsie com>
Date: Wed Aug 31 10:51:45 2016 +0100
Ensure the search text is showing when going back to search results
Fixes the second half of https://bugzilla.gnome.org/show_bug.cgi?id=770559
src/gs-shell.c | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/src/gs-shell.c b/src/gs-shell.c
index 5e0d4c5..cfd23b7 100644
--- a/src/gs-shell.c
+++ b/src/gs-shell.c
@@ -82,6 +82,7 @@ typedef struct
GtkWindow *main_window;
GQueue *back_entry_stack;
GPtrArray *modal_dialogs;
+ gulong search_changed_id;
} GsShellPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (GsShell, gs_shell, G_TYPE_OBJECT)
@@ -441,6 +442,15 @@ gs_shell_back_button_cb (GtkWidget *widget, GsShell *shell)
case GS_SHELL_MODE_SEARCH:
g_debug ("popping back entry for %s with %s",
page_name[entry->mode], entry->search);
+
+ /* set the text in the entry and move cursor to the end */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "entry_search"));
+ g_signal_handler_block (widget, priv->search_changed_id);
+ gtk_entry_set_text (GTK_ENTRY (widget), entry->search);
+ gtk_editable_set_position (GTK_EDITABLE (widget), -1);
+ g_signal_handler_unblock (widget, priv->search_changed_id);
+
+ /* set the mode directly */
gs_shell_change_mode (shell, entry->mode,
(gpointer) entry->search, FALSE);
break;
@@ -732,8 +742,9 @@ gs_shell_setup (GsShell *shell, GsPluginLoader *plugin_loader, GCancellable *can
g_signal_connect (priv->main_window, "key-press-event",
G_CALLBACK (window_keypress_handler), shell);
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "entry_search"));
- g_signal_connect (widget, "search-changed",
- G_CALLBACK (search_changed_handler), shell);
+ priv->search_changed_id =
+ g_signal_connect (widget, "search-changed",
+ G_CALLBACK (search_changed_handler), shell);
/* load content */
g_signal_connect (priv->shell_loading, "refreshed",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]