aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-live-search.c
diff options
context:
space:
mode:
Diffstat (limited to 'libempathy-gtk/empathy-live-search.c')
-rw-r--r--libempathy-gtk/empathy-live-search.c18
1 files changed, 18 insertions, 0 deletions
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))