Fix missing keyboard events for bookmark menu items
This commit is contained in:
parent
f200fc8f9d
commit
05f403bd54
1 changed files with 18 additions and 1 deletions
|
@ -232,6 +232,14 @@ katze_array_action_activate (GtkAction* action)
|
||||||
GTK_ACTION_CLASS (katze_array_action_parent_class)->activate (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
|
static gboolean
|
||||||
katze_array_action_menu_button_press_cb (GtkWidget* proxy,
|
katze_array_action_menu_button_press_cb (GtkWidget* proxy,
|
||||||
GdkEventButton* event,
|
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");
|
KatzeItem* item = g_object_get_data (G_OBJECT (proxy), "KatzeItem");
|
||||||
gboolean handled;
|
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)
|
if (!handled)
|
||||||
g_signal_emit (array_action, signals[ACTIVATE_ITEM], 0, item);
|
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;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,6 +320,9 @@ katze_array_action_generate_menu (KatzeArrayAction* array_action,
|
||||||
{
|
{
|
||||||
g_signal_connect (menuitem, "button-press-event",
|
g_signal_connect (menuitem, "button-press-event",
|
||||||
G_CALLBACK (katze_array_action_menu_button_press_cb), array_action);
|
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);
|
gtk_widget_show (menuitem);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue