[gnome-builder] project-selector: use EggSearchBar



commit d34b5f3cfd378273c55647c89388f07061ec4e61
Author: Christian Hergert <christian hergert me>
Date:   Mon May 4 12:19:43 2015 -0700

    project-selector: use EggSearchBar
    
    EggSearchBar deals with the type-ahead for us, as well as being
    activatable from an accelerator.

 data/ui/gb-projects-dialog.ui    |    6 ++--
 src/dialogs/gb-projects-dialog.c |   40 +++++++------------------------------
 2 files changed, 11 insertions(+), 35 deletions(-)
---
diff --git a/data/ui/gb-projects-dialog.ui b/data/ui/gb-projects-dialog.ui
index 58ee1db..41cc99c 100644
--- a/data/ui/gb-projects-dialog.ui
+++ b/data/ui/gb-projects-dialog.ui
@@ -76,10 +76,10 @@
         <property name="orientation">vertical</property>
         <property name="visible">true</property>
         <child>
-          <object class="GtkSearchBar" id="search_bar">
-            <property name="search-mode-enabled">true</property>
+          <object class="EggSearchBar" id="search_bar">
+            <property name="search-mode-enabled">false</property>
             <property name="visible">true</property>
-            <child>
+            <child internal-child="entry">
               <object class="GtkSearchEntry" id="search_entry">
                 <property name="width-chars">40</property>
                 <property name="visible">true</property>
diff --git a/src/dialogs/gb-projects-dialog.c b/src/dialogs/gb-projects-dialog.c
index 9ebefc5..e0d6d19 100644
--- a/src/dialogs/gb-projects-dialog.c
+++ b/src/dialogs/gb-projects-dialog.c
@@ -485,35 +485,6 @@ gb_projects_dialog_constructed (GObject *object)
                                       g_object_ref (self));
 }
 
-static gboolean
-gb_projects_dialog_key_press_event (GtkWidget   *widget,
-                                    GdkEventKey *event)
-{
-  GbProjectsDialog *self = (GbProjectsDialog *)widget;
-
-  g_assert (GB_IS_PROJECTS_DIALOG (self));
-  g_assert (event != NULL);
-
-  if (GTK_WIDGET_CLASS (gb_projects_dialog_parent_class)->key_press_event (widget, event))
-    return TRUE;
-
-  if (!gtk_toggle_button_get_active (self->search_button))
-    {
-      if ((!gb_gdk_event_key_is_keynav (event) &&
-           !gb_gdk_event_key_is_space (event) &&
-           !gb_gdk_event_key_is_tab (event) &&
-           !gb_gdk_event_key_is_modifier_key (event)) ||
-          (((event->state & GDK_CONTROL_MASK) != 0) && (event->keyval == GDK_KEY_f)))
-        {
-          gtk_toggle_button_set_active (self->search_button, TRUE);
-          gtk_widget_event (GTK_WIDGET (self->search_entry), (GdkEvent *)event);
-          return TRUE;
-        }
-    }
-
-  return FALSE;
-}
-
 static void
 gb_projects_dialog_finalize (GObject *object)
 {
@@ -529,13 +500,10 @@ static void
 gb_projects_dialog_class_init (GbProjectsDialogClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
-  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
   object_class->constructed = gb_projects_dialog_constructed;
   object_class->finalize = gb_projects_dialog_finalize;
 
-  widget_class->key_press_event = gb_projects_dialog_key_press_event;
-
   GB_WIDGET_CLASS_TEMPLATE (klass, "gb-projects-dialog.ui");
 
   GB_WIDGET_CLASS_BIND (klass, GbProjectsDialog, action_bar);
@@ -555,9 +523,17 @@ gb_projects_dialog_class_init (GbProjectsDialogClass *klass)
 static void
 gb_projects_dialog_init (GbProjectsDialog *self)
 {
+  GtkAccelGroup *accel_group;
+
   gtk_widget_init_template (GTK_WIDGET (self));
 
   gb_settings_init_window (GTK_WINDOW (self));
 
   self->recent_projects = ide_recent_projects_new ();
+
+  accel_group = gtk_accel_group_new ();
+  gtk_widget_add_accelerator (GTK_WIDGET (self->search_bar), "reveal",
+                              accel_group, GDK_KEY_f, GDK_CONTROL_MASK, 0);
+  gtk_window_add_accel_group (GTK_WINDOW (self), accel_group);
+  g_clear_object (&accel_group);
 }


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