[gnome-builder/wip/greeter] greeter: activate first row when search	entry is activated
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc: 
- Subject: [gnome-builder/wip/greeter] greeter: activate first row when search	entry is activated
- Date: Mon, 11 May 2015 00:29:49 +0000 (UTC)
commit 37eec3b26fa4525185f0c929d44cb6d3f4d82224
Author: Christian Hergert <christian hergert me>
Date:   Sun May 10 17:29:44 2015 -0700
    greeter: activate first row when search entry is activated
 src/greeter/gb-greeter-window.c |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)
---
diff --git a/src/greeter/gb-greeter-window.c b/src/greeter/gb-greeter-window.c
index 695d2b0..4461cd3 100644
--- a/src/greeter/gb-greeter-window.c
+++ b/src/greeter/gb-greeter-window.c
@@ -56,6 +56,37 @@ enum {
 
 static GParamSpec *gParamSpecs [LAST_PROP];
 
+static void
+gb_greeter_window_first_visible_cb (GtkWidget *widget,
+                                    gpointer   user_data)
+{
+  GtkWidget **row = user_data;
+
+  if ((*row == NULL) && gtk_widget_get_child_visible (widget))
+    *row = widget;
+}
+
+static void
+gb_greeter_window__search_entry_activate (GbGreeterWindow *self,
+                                          GtkSearchEntry  *search_entry)
+{
+  GtkWidget *row = NULL;
+
+  g_assert (GB_IS_GREETER_WINDOW (self));
+  g_assert (GTK_IS_SEARCH_ENTRY (search_entry));
+
+  gtk_container_foreach (GTK_CONTAINER (self->my_projects_list_box),
+                         gb_greeter_window_first_visible_cb,
+                         &row);
+  if (row == NULL)
+    gtk_container_foreach (GTK_CONTAINER (self->other_projects_list_box),
+                           gb_greeter_window_first_visible_cb,
+                           &row);
+
+  if (row != NULL)
+    g_signal_emit_by_name (row, "activate");
+}
+
 IdeRecentProjects *
 gb_greeter_window_get_recent_projects (GbGreeterWindow *self)
 {
@@ -374,6 +405,12 @@ gb_greeter_window_init (GbGreeterWindow *self)
   gtk_widget_init_template (GTK_WIDGET (self));
 
   g_signal_connect_object (self->search_entry,
+                           "activate",
+                           G_CALLBACK (gb_greeter_window__search_entry_activate),
+                           self,
+                           G_CONNECT_SWAPPED);
+
+  g_signal_connect_object (self->search_entry,
                            "changed",
                            G_CALLBACK (gb_greeter_window__search_entry_changed),
                            self,
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]