[gnome-builder] prefs: use EggSearchBar for filtering preferences



commit 4062ca8650f9b4c0728cfc4a20ce4db4ab73c7fb
Author: Christian Hergert <christian hergert me>
Date:   Mon May 4 00:35:59 2015 -0700

    prefs: use EggSearchBar for filtering preferences
    
    Use our new EggSearchBar to simplify things.

 data/ui/gb-preferences-window.ui        |   18 +++-----
 src/Makefile.am                         |    2 +
 src/preferences/gb-preferences-window.c |   70 ++-----------------------------
 3 files changed, 12 insertions(+), 78 deletions(-)
---
diff --git a/data/ui/gb-preferences-window.ui b/data/ui/gb-preferences-window.ui
index b11ac76..3e63d66 100644
--- a/data/ui/gb-preferences-window.ui
+++ b/data/ui/gb-preferences-window.ui
@@ -67,20 +67,14 @@
             <property name="orientation">vertical</property>
             <property name="visible">True</property>
             <child>
-              <object class="GtkRevealer" id="search_revealer">
+              <object class="EggSearchBar" id="search_bar">
                 <property name="visible">True</property>
-                <property name="reveal-child" bind-source="search_toggle" bind-property="active" 
bind-flags="bidirectional">False</property>
-                <child>
-                  <object class="GtkSearchBar" id="search_bar">
+                <property name="show-close-button">False</property>
+                <property name="search-mode-enabled" bind-source="search_toggle" bind-property="active" 
bind-flags="bidirectional">False</property>
+                <child internal-child="entry">
+                  <object class="GtkEntry" id="search_entry">
+                    <property name="placeholder-text" translatable="yes">Search Preferences…</property>
                     <property name="visible">True</property>
-                    <property name="show-close-button">False</property>
-                    <property name="search-mode-enabled">True</property>
-                    <child>
-                      <object class="GtkEntry" id="search_entry">
-                        <property name="placeholder-text" translatable="yes">Search Preferences</property>
-                        <property name="visible">True</property>
-                      </object>
-                    </child>
                   </object>
                 </child>
               </object>
diff --git a/src/Makefile.am b/src/Makefile.am
index 9096014..7ed2120 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -183,6 +183,7 @@ libgnome_builder_la_LIBADD = \
        $(BUILDER_LIBS) \
        $(OPTIMIZE_LDFLAGS) \
        $(top_builddir)/libide/libide-1.0.la \
+       $(top_builddir)/contrib/egg/libegg.la \
        -lm
 
 libgnome_builder_la_CFLAGS = \
@@ -218,6 +219,7 @@ libgnome_builder_la_CFLAGS = \
        -I$(srcdir)/workbench \
        -I$(top_builddir)/libide \
        -I$(top_srcdir)/libide \
+       -I$(top_srcdir)/contrib/egg \
        $(NULL)
 
 gnome_builder_SOURCES = main.c
diff --git a/src/preferences/gb-preferences-window.c b/src/preferences/gb-preferences-window.c
index 44cb8ff..9293743 100644
--- a/src/preferences/gb-preferences-window.c
+++ b/src/preferences/gb-preferences-window.c
@@ -18,6 +18,8 @@
 
 #include <glib/gi18n.h>
 
+#include "egg-search-bar.h"
+
 #include "gb-gdk.h"
 #include "gb-preferences-page-editor.h"
 #include "gb-preferences-page-experimental.h"
@@ -35,7 +37,7 @@ struct _GbPreferencesWindow
   GtkWidget       *return_to_page;
   GtkHeaderBar    *right_header_bar;
   GtkSearchEntry  *search_entry;
-  GtkSearchBar    *search_bar;
+  EggSearchBar    *search_bar;
   GtkStack        *stack;
 };
 
@@ -55,20 +57,6 @@ gb_preferences_window_new (void)
 }
 
 static void
-gb_preferences_window_notify_search_mode (GbPreferencesWindow *self,
-                                          GParamSpec          *pspec,
-                                          GtkSearchBar        *search_bar)
-{
-  g_return_if_fail (GB_IS_PREFERENCES_WINDOW (self));
-
-  if (!gtk_search_bar_get_search_mode (search_bar) && self->return_to_page)
-    {
-      gtk_stack_set_visible_child (self->stack, self->return_to_page);
-      self->return_to_page = NULL;
-    }
-}
-
-static void
 gb_preferences_window_section_changed (GtkStack            *stack,
                                        GParamSpec          *pspec,
                                        GbPreferencesWindow *self)
@@ -138,7 +126,6 @@ gb_preferences_window_key_press_event (GtkWidget   *widget,
 {
   GbPreferencesWindow *self = (GbPreferencesWindow *)widget;
   gboolean ret;
-  gboolean editable = FALSE;
 
   g_return_val_if_fail (GB_IS_PREFERENCES_WINDOW (self), FALSE);
 
@@ -147,47 +134,6 @@ gb_preferences_window_key_press_event (GtkWidget   *widget,
    */
   ret = GTK_WIDGET_CLASS (gb_preferences_window_parent_class)->key_press_event (widget, event);
 
-  /*
-   * Check if the focus widget is a GtkEditable.
-   */
-  editable = GTK_IS_EDITABLE (gtk_window_get_focus (GTK_WINDOW (widget)));
-
-  if (!ret && !editable)
-    {
-      if (!gtk_search_bar_get_search_mode (self->search_bar))
-        {
-          if (gb_gdk_event_key_is_escape (event))
-            {
-              g_signal_emit_by_name (widget, "close");
-            }
-          else if (!gb_gdk_event_key_is_keynav (event) &&
-                   !gb_gdk_event_key_is_space (event) &&
-                   !gb_gdk_event_key_is_tab (event))
-            {
-              GtkWidget *current_page;
-
-              current_page = gtk_stack_get_visible_child (self->stack);
-
-              if (gtk_search_bar_handle_event (GTK_SEARCH_BAR (self->search_bar),
-                                               (GdkEvent*) event) == GDK_EVENT_STOP)
-                {
-                  self->return_to_page = current_page;
-                  ret = TRUE;
-                }
-              else
-                ret = FALSE;
-            }
-        }
-      else
-        {
-          if (!gtk_widget_is_focus (GTK_WIDGET (self->search_bar)) &&
-              gb_gdk_event_key_is_escape (event))
-            gtk_search_bar_set_search_mode (self->search_bar, FALSE);
-
-          ret = TRUE;
-        }
-    }
-
   return ret;
 }
 
@@ -198,21 +144,12 @@ gb_preferences_window_constructed (GObject *object)
 
   G_OBJECT_CLASS (gb_preferences_window_parent_class)->constructed (object);
 
-  gtk_search_bar_connect_entry (self->search_bar,
-                                GTK_ENTRY (self->search_entry));
-
   g_signal_connect (self->stack,
                     "notify::visible-child",
                     G_CALLBACK (gb_preferences_window_section_changed),
                     self);
   gb_preferences_window_section_changed (self->stack, NULL, self);
 
-  g_signal_connect_object (self->search_bar,
-                           "notify::search-mode-enabled",
-                           G_CALLBACK (gb_preferences_window_notify_search_mode),
-                           self,
-                           G_CONNECT_SWAPPED | G_CONNECT_AFTER);
-
   g_signal_connect_object (self->search_entry,
                            "changed",
                            G_CALLBACK (gb_preferences_window_search_changed),
@@ -247,6 +184,7 @@ gb_preferences_window_class_init (GbPreferencesWindowClass *klass)
   GB_WIDGET_CLASS_BIND (widget_class, GbPreferencesWindow, search_entry);
   GB_WIDGET_CLASS_BIND (widget_class, GbPreferencesWindow, stack);
 
+  g_type_ensure (EGG_TYPE_SEARCH_BAR);
   g_type_ensure (GB_TYPE_PREFERENCES_PAGE_EDITOR);
   g_type_ensure (GB_TYPE_PREFERENCES_PAGE_EXPERIMENTAL);
   g_type_ensure (GB_TYPE_PREFERENCES_PAGE_GIT);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]