[empathy] added return value for the keynav signal



commit df5cfb43b2c1bb9d0cd5f55b7397cfd327aedd34
Author: Felix Kaser <f kaser gmx net>
Date:   Thu Jul 29 16:53:28 2010 +0200

    added return value for the keynav signal
    
    now the hook widget can decide if it wants to handle the event or not. in case of the treeview this allows us to navigate in the search entry with left and right and navigate in the treeview with up and down since those are catched by the treeview

 libempathy-gtk/empathy-individual-view.c |    8 ++++++--
 libempathy-gtk/empathy-live-search.c     |   12 +++++++-----
 2 files changed, 13 insertions(+), 7 deletions(-)
---
diff --git a/libempathy-gtk/empathy-individual-view.c b/libempathy-gtk/empathy-individual-view.c
index 92bdeac..a479268 100644
--- a/libempathy-gtk/empathy-individual-view.c
+++ b/libempathy-gtk/empathy-individual-view.c
@@ -1283,23 +1283,27 @@ individual_view_search_activate_cb (GtkWidget *search,
     }
 }
 
-static void
+static gboolean
 individual_view_search_key_navigation_cb (GtkWidget *search,
   GdkEvent *event,
   EmpathyIndividualView *view)
 {
   GdkEventKey *eventkey = ((GdkEventKey *) event);
+  gboolean ret = FALSE;
+
   if (eventkey->keyval == GDK_Up || eventkey->keyval == GDK_Down)
     {
       GdkEvent *new_event;
 
       new_event = gdk_event_copy (event);
       gtk_widget_grab_focus (GTK_WIDGET (view));
-      gtk_widget_event (GTK_WIDGET (view), new_event);
+      ret = gtk_widget_event (GTK_WIDGET (view), new_event);
       gtk_widget_grab_focus (search);
 
       gdk_event_free (new_event);
     }
+
+  return ret;
 }
 
 static void
diff --git a/libempathy-gtk/empathy-live-search.c b/libempathy-gtk/empathy-live-search.c
index 3b6e18e..c029d0f 100644
--- a/libempathy-gtk/empathy-live-search.c
+++ b/libempathy-gtk/empathy-live-search.c
@@ -30,6 +30,7 @@
 #include <libempathy/empathy-utils.h>
 
 #include "empathy-live-search.h"
+#include "empathy-gtk-marshal.h"
 
 G_DEFINE_TYPE (EmpathyLiveSearch, empathy_live_search, GTK_TYPE_HBOX)
 
@@ -132,6 +133,7 @@ live_search_entry_key_pressed_cb (GtkEntry *entry,
     gpointer user_data)
 {
   EmpathyLiveSearch *self = EMPATHY_LIVE_SEARCH (user_data);
+  gboolean ret;
 
   /* if esc key pressed, hide the search */
   if (event->keyval == GDK_Escape)
@@ -144,8 +146,8 @@ live_search_entry_key_pressed_cb (GtkEntry *entry,
   if (event->keyval == GDK_Up || event->keyval == GDK_Down
       || event->keyval == GDK_Left || event->keyval == GDK_Right)
      {
-       g_signal_emit (self, signals[KEYNAV], 0, event);
-       return TRUE;
+       g_signal_emit (self, signals[KEYNAV], 0, event, &ret);
+       return ret;
      }
 
   return FALSE;
@@ -393,9 +395,9 @@ empathy_live_search_class_init (EmpathyLiveSearchClass *klass)
       G_TYPE_FROM_CLASS (object_class),
       G_SIGNAL_RUN_LAST,
       0,
-      NULL, NULL,
-      g_cclosure_marshal_VOID__BOXED,
-      G_TYPE_NONE, 1, GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
+      g_signal_accumulator_true_handled, NULL,
+      _empathy_gtk_marshal_BOOLEAN__BOXED,
+      G_TYPE_BOOLEAN, 1, GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
 
   param_spec = g_param_spec_object ("hook-widget", "Live Searchs Hook Widget",
       "The live search catches key-press-events on this widget",



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]