summaryrefslogtreecommitdiff
path: root/katze/katze-arrayaction.c
diff options
context:
space:
mode:
authorEnrico Tröger <enrico.troeger@uvena.de>2009-05-14 20:52:55 +0200
committerChristian Dywan <christian@twotoasts.de>2009-05-14 20:52:55 +0200
commitb71fc64c527ce2d1ff6943fbdd712e49181d052d (patch)
treed680f369b8092d7e84b960076bc7e08a43c35539 /katze/katze-arrayaction.c
parent2ce12fb337470c62d475628060ca261320c73698 (diff)
downloadmidori-b71fc64c527ce2d1ff6943fbdd712e49181d052d.tar.gz
Fix missing keyboard events for bookmark menu items
Diffstat (limited to 'katze/katze-arrayaction.c')
-rw-r--r--katze/katze-arrayaction.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/katze/katze-arrayaction.c b/katze/katze-arrayaction.c
index 0969c5d7..c7909d20 100644
--- a/katze/katze-arrayaction.c
+++ b/katze/katze-arrayaction.c
@@ -232,6 +232,14 @@ katze_array_action_activate (GtkAction* action)
GTK_ACTION_CLASS (katze_array_action_parent_class)->activate (action);
}
+static void
+katze_array_action_menu_activate_cb (GtkWidget* proxy,
+ KatzeArrayAction* array_action)
+{
+ KatzeItem* item = g_object_get_data (G_OBJECT (proxy), "KatzeItem");
+ g_signal_emit (array_action, signals[ACTIVATE_ITEM], 0, item);
+}
+
static gboolean
katze_array_action_menu_button_press_cb (GtkWidget* proxy,
GdkEventButton* event,
@@ -240,11 +248,17 @@ katze_array_action_menu_button_press_cb (GtkWidget* proxy,
KatzeItem* item = g_object_get_data (G_OBJECT (proxy), "KatzeItem");
gboolean handled;
- g_signal_emit (array_action, signals[ACTIVATE_ITEM_ALT], 0, item, event->button, &handled);
+ g_signal_emit (array_action, signals[ACTIVATE_ITEM_ALT], 0, item,
+ event->button, &handled);
if (!handled)
g_signal_emit (array_action, signals[ACTIVATE_ITEM], 0, item);
+ /* we need to block the 'activate' handler which would be called
+ * otherwise as well */
+ g_signal_handlers_block_by_func (proxy,
+ katze_array_action_menu_activate_cb, array_action);
+
return TRUE;
}
@@ -306,6 +320,9 @@ katze_array_action_generate_menu (KatzeArrayAction* array_action,
{
g_signal_connect (menuitem, "button-press-event",
G_CALLBACK (katze_array_action_menu_button_press_cb), array_action);
+ /* we need the 'activate' signal as well for keyboard events */
+ g_signal_connect (menuitem, "activate",
+ G_CALLBACK (katze_array_action_menu_activate_cb), array_action);
}
gtk_widget_show (menuitem);
}