diff options
author | Felix Kaser <f.kaser@gmx.net> | 2010-07-27 22:59:58 +0800 |
---|---|---|
committer | Felix Kaser <f.kaser@gmx.net> | 2010-07-29 21:48:13 +0800 |
commit | 6568f7b78787cd1c6dbf7a447b71865986b12bc6 (patch) | |
tree | 18b0670613ebbdd395386cc2be2644d49df229df /libempathy-gtk/empathy-contact-list-view.c | |
parent | 2e4f5741143341616ed2cca3bf27a0204483d4ff (diff) | |
download | gsoc2013-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.c | 24 |
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); |