aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-contact-list-view.c
diff options
context:
space:
mode:
authorFelix Kaser <f.kaser@gmx.net>2010-07-27 22:59:58 +0800
committerFelix Kaser <f.kaser@gmx.net>2010-07-29 21:48:13 +0800
commit6568f7b78787cd1c6dbf7a447b71865986b12bc6 (patch)
tree18b0670613ebbdd395386cc2be2644d49df229df /libempathy-gtk/empathy-contact-list-view.c
parent2e4f5741143341616ed2cca3bf27a0204483d4ff (diff)
downloadgsoc2013-empathy-6568f7b78787cd1c6dbf7a447b71865986b12bc6.tar
gsoc2013-empathy-6568f7b78787cd1c6dbf7a447b71865986b12bc6.tar.gz
gsoc2013-empathy-6568f7b78787cd1c6dbf7a447b71865986b12bc6.tar.bz2
gsoc2013-empathy-6568f7b78787cd1c6dbf7a447b71865986b12bc6.tar.lz
gsoc2013-empathy-6568f7b78787cd1c6dbf7a447b71865986b12bc6.tar.xz
gsoc2013-empathy-6568f7b78787cd1c6dbf7a447b71865986b12bc6.tar.zst
gsoc2013-empathy-6568f7b78787cd1c6dbf7a447b71865986b12bc6.zip
enable keynavigation during search in contact-list
Diffstat (limited to 'libempathy-gtk/empathy-contact-list-view.c')
-rw-r--r--libempathy-gtk/empathy-contact-list-view.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/libempathy-gtk/empathy-contact-list-view.c b/libempathy-gtk/empathy-contact-list-view.c
index 5860adef8..11c9e78a2 100644
--- a/libempathy-gtk/empathy-contact-list-view.c
+++ b/libempathy-gtk/empathy-contact-list-view.c
@@ -1277,6 +1277,24 @@ contact_list_view_search_activate_cb (GtkWidget *search,
}
static void
+contact_list_view_search_key_navigation_cb (GtkWidget *search,
+ gpointer eventkey,
+ EmpathyContactListView *view)
+{
+ GdkEventKey *event = ((GdkEventKey *) eventkey);
+ if (event->keyval == GDK_Up || event->keyval == GDK_Down) {
+ GdkEvent *new_event;
+
+ new_event = gdk_event_copy ((GdkEvent *) event);
+ gtk_widget_grab_focus (GTK_WIDGET (view));
+ gtk_widget_event (GTK_WIDGET (view), new_event);
+ gtk_widget_grab_focus (search);
+
+ gdk_event_free (new_event);
+ }
+}
+
+static void
contact_list_view_search_hide_cb (EmpathyLiveSearch *search,
EmpathyContactListView *view)
{
@@ -2144,6 +2162,9 @@ empathy_contact_list_view_set_live_search (EmpathyContactListView *view,
contact_list_view_search_activate_cb,
view);
g_signal_handlers_disconnect_by_func (priv->search_widget,
+ contact_list_view_search_key_navigation_cb,
+ view);
+ g_signal_handlers_disconnect_by_func (priv->search_widget,
contact_list_view_search_hide_cb,
view);
g_signal_handlers_disconnect_by_func (priv->search_widget,
@@ -2167,6 +2188,9 @@ empathy_contact_list_view_set_live_search (EmpathyContactListView *view,
g_signal_connect (priv->search_widget, "activate",
G_CALLBACK (contact_list_view_search_activate_cb),
view);
+ g_signal_connect (priv->search_widget, "key-navigation",
+ G_CALLBACK (contact_list_view_search_key_navigation_cb),
+ view);
g_signal_connect (priv->search_widget, "hide",
G_CALLBACK (contact_list_view_search_hide_cb),
view);