[gnome-builder] prefs: return to original page after clearning search query
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] prefs: return to original page after clearning search query
- Date: Tue, 3 Feb 2015 15:07:18 +0000 (UTC)
commit 70c2a7a16c608af76eeb2485c9841e817c06aa1b
Author: Christian Hergert <christian hergert me>
Date: Sun Feb 1 08:37:30 2015 +0100
prefs: return to original page after clearning search query
src/preferences/gb-preferences-window.c | 34 +++++++++++++++++++++++++++++-
1 files changed, 32 insertions(+), 2 deletions(-)
---
diff --git a/src/preferences/gb-preferences-window.c b/src/preferences/gb-preferences-window.c
index 99040ca..20d8ab6 100644
--- a/src/preferences/gb-preferences-window.c
+++ b/src/preferences/gb-preferences-window.c
@@ -34,6 +34,7 @@
struct _GbPreferencesWindowPrivate
{
+ GtkWidget *return_to_page;
GtkHeaderBar *right_header_bar;
GtkSearchEntry *search_entry;
GtkSearchBar *search_bar;
@@ -57,6 +58,22 @@ gb_preferences_window_new (void)
}
static void
+gb_preferences_window_notify_search_mode (GbPreferencesWindow *window,
+ GParamSpec *pspec,
+ GtkSearchBar *search_bar)
+{
+ g_return_if_fail (GB_IS_PREFERENCES_WINDOW (window));
+
+ if (!gtk_search_bar_get_search_mode (search_bar) &&
+ window->priv->return_to_page)
+ {
+ gtk_stack_set_visible_child (window->priv->stack,
+ window->priv->return_to_page);
+ window->priv->return_to_page = NULL;
+ }
+}
+
+static void
gb_preferences_window_section_changed (GtkStack *stack,
GParamSpec *pspec,
GbPreferencesWindow *window)
@@ -187,7 +204,7 @@ gb_preferences_window_key_press_event (GtkWidget *widget,
ret = GTK_WIDGET_CLASS (gb_preferences_window_parent_class)->key_press_event (widget, event);
/*
- * Check of the focus widget is editable.
+ * Check if the focus widget is a GtkEditable.
*/
editable = GTK_IS_EDITABLE (gtk_window_get_focus (GTK_WINDOW (widget)));
@@ -203,9 +220,16 @@ gb_preferences_window_key_press_event (GtkWidget *widget,
!is_space_event (event) &&
!is_tab_event (event))
{
+ GtkWidget *current_page;
+
+ current_page = gtk_stack_get_visible_child (self->priv->stack);
+
if (gtk_search_bar_handle_event (GTK_SEARCH_BAR (self->priv->search_bar),
(GdkEvent*) event) == GDK_EVENT_STOP)
- ret = TRUE;
+ {
+ self->priv->return_to_page = current_page;
+ ret = TRUE;
+ }
else
ret = FALSE;
}
@@ -239,6 +263,12 @@ gb_preferences_window_constructed (GObject *object)
window);
gb_preferences_window_section_changed (window->priv->stack, NULL, window);
+ g_signal_connect_object (window->priv->search_bar,
+ "notify::search-mode-enabled",
+ G_CALLBACK (gb_preferences_window_notify_search_mode),
+ window,
+ G_CONNECT_SWAPPED | G_CONNECT_AFTER);
+
g_signal_connect_object (window->priv->search_entry,
"changed",
G_CALLBACK (gb_preferences_window_search_changed),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]