[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]