From c105d23a6dc033e281304a0032095f13e7fef63f Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Fri, 20 May 2011 15:32:33 +0200 Subject: live-search: fix keyboard navigation using Home/End (#632787) --- libempathy-gtk/empathy-live-search.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/libempathy-gtk/empathy-live-search.c b/libempathy-gtk/empathy-live-search.c index 7296eb7c6..21aefed90 100644 --- a/libempathy-gtk/empathy-live-search.c +++ b/libempathy-gtk/empathy-live-search.c @@ -276,6 +276,16 @@ live_search_entry_key_pressed_cb (GtkEntry *entry, return fire_key_navigation_sig (self, event); } + if (event->keyval == GDK_KEY_Home || event->keyval == GDK_KEY_End) + { + /* If the live search is visible, the entry should catch the Home/End + * events */ + if (!gtk_widget_get_visible (GTK_WIDGET (self))) + { + return fire_key_navigation_sig (self, event); + } + } + return FALSE; } @@ -342,6 +352,14 @@ live_search_key_press_event_cb (GtkWidget *widget, if (event->keyval == GDK_KEY_Up || event->keyval == GDK_KEY_Down) return FALSE; + if (event->keyval == GDK_KEY_Home || event->keyval == GDK_KEY_End) + { + /* Home/End keys have to be forwarded to the entry only if the live + * search is visible (to move the cursor inside the entry). */ + if (!gtk_widget_get_visible (GTK_WIDGET (self))) + return FALSE; + } + /* realize the widget if it is not realized yet */ gtk_widget_realize (priv->search_entry); if (!gtk_widget_has_focus (priv->search_entry)) -- cgit v1.2.3