[gnome-builder] editor: activate symbol row and hide popover on Return



commit 1dee822d34dd670fc18d0825e7a795a0b0926436
Author: Christian Hergert <christian hergert me>
Date:   Mon Apr 13 19:48:11 2015 -0700

    editor: activate symbol row and hide popover on Return

 src/editor/gb-editor-view-private.h |    1 +
 src/editor/gb-editor-view.c         |   29 +++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 0 deletions(-)
---
diff --git a/src/editor/gb-editor-view-private.h b/src/editor/gb-editor-view-private.h
index 60d9bd4..ec0621b 100644
--- a/src/editor/gb-editor-view-private.h
+++ b/src/editor/gb-editor-view-private.h
@@ -44,6 +44,7 @@ struct _GbEditorView
   GtkProgressBar      *progress_bar;
   GtkMenuButton       *symbols_button;
   GtkListBox          *symbols_listbox;
+  GtkPopover          *symbols_popover;
   GtkSearchEntry      *symbols_search_entry;
   GtkMenuButton       *tweak_button;
   GbEditorTweakWidget *tweak_widget;
diff --git a/src/editor/gb-editor-view.c b/src/editor/gb-editor-view.c
index 730942a..a25210f 100644
--- a/src/editor/gb-editor-view.c
+++ b/src/editor/gb-editor-view.c
@@ -544,6 +544,28 @@ gb_editor_view__symbol_row_activated_cb (GbEditorView  *self,
   gb_editor_view_navigate_to (GB_VIEW (self), location);
 }
 
+static void
+gb_editor_view__symbol_entry_activate_cb (GbEditorView *self,
+                                          GtkEntry     *entry)
+{
+  GtkListBoxRow *row;
+
+  g_assert (GB_IS_EDITOR_VIEW (self));
+  g_assert (GTK_IS_ENTRY (entry));
+
+  /*
+   * FIXME:
+   *
+   * Use row_at_y() with 1, since getting from 0 does not work.
+   */
+  row = gtk_list_box_get_row_at_y (self->symbols_listbox, 1);
+  if (row != NULL)
+    {
+      g_signal_emit_by_name (row, "activate");
+      gtk_widget_hide (GTK_WIDGET (self->symbols_popover));
+    }
+}
+
 static gboolean
 gb_editor_view_symbol_filter_func (GtkListBoxRow *row,
                                    gpointer       user_data)
@@ -677,6 +699,7 @@ gb_editor_view_class_init (GbEditorViewClass *klass)
   GB_WIDGET_CLASS_BIND (klass, GbEditorView, progress_bar);
   GB_WIDGET_CLASS_BIND (klass, GbEditorView, symbols_button);
   GB_WIDGET_CLASS_BIND (klass, GbEditorView, symbols_listbox);
+  GB_WIDGET_CLASS_BIND (klass, GbEditorView, symbols_popover);
   GB_WIDGET_CLASS_BIND (klass, GbEditorView, symbols_search_entry);
   GB_WIDGET_CLASS_BIND (klass, GbEditorView, tweak_button);
   GB_WIDGET_CLASS_BIND (klass, GbEditorView, tweak_widget);
@@ -707,6 +730,12 @@ gb_editor_view_init (GbEditorView *self)
                            G_CONNECT_SWAPPED);
 
   g_signal_connect_object (self->symbols_search_entry,
+                           "activate",
+                           G_CALLBACK (gb_editor_view__symbol_entry_activate_cb),
+                           self,
+                           G_CONNECT_SWAPPED);
+
+  g_signal_connect_object (self->symbols_search_entry,
                            "changed",
                            G_CALLBACK (gb_editor_view_invalidate_symbol_filter),
                            self,


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