diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-03-11 19:28:20 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-03-11 19:28:20 +0000 |
commit | e4f80e68846c88fe7fe60243a0d6a8dd010990b5 (patch) | |
tree | 170f6161df86784d67e903d777493f71b3d684b0 /libs | |
parent | 463b95ec658d5ff88c48f6bd09dc058d20e80c7a (diff) |
correct (or at least better) handling of shifted shortcuts under OS X
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4794 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gtkmm2ext/sync-menu.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/libs/gtkmm2ext/sync-menu.c b/libs/gtkmm2ext/sync-menu.c index 894446c424..3b93436e5d 100644 --- a/libs/gtkmm2ext/sync-menu.c +++ b/libs/gtkmm2ext/sync-menu.c @@ -313,6 +313,7 @@ carbon_menu_item_update_accelerator (CarbonMenuItem *carbon_item, gint n_keys; gint use_command; gboolean add_modifiers = FALSE; + UInt8 modifiers = 0; /* implies Command key */ if (gdk_keymap_get_entries_for_keyval (keymap, key->accel_key, &keys, &n_keys) == 0) @@ -347,16 +348,20 @@ carbon_menu_item_update_accelerator (CarbonMenuItem *carbon_item, } } else { - SetMenuItemCommandKey (carbon_item->menu, carbon_item->index, - true, keys[0].keycode); + + SetMenuItemCommandKey (carbon_item->menu, carbon_item->index, true, keys[0].keycode); + if (keys[0].level == 1) + { + /* regular key, but it needs shift to make it work */ + modifiers |= kMenuShiftModifier; + } + g_free (keys); - add_modifiers = TRUE; + add_modifiers = TRUE; } if (add_modifiers) { - UInt8 modifiers = 0; /* implies Command key */ - use_command = 0; if (key->accel_mods) @@ -387,7 +392,6 @@ carbon_menu_item_update_accelerator (CarbonMenuItem *carbon_item, SetMenuItemModifiers (carbon_item->menu, carbon_item->index, modifiers); - return; } } @@ -589,7 +593,7 @@ menu_event_handler_func (EventHandlerCallRef event_handler_call_ref, sizeof (widget), 0, &widget); if (err == noErr && GTK_IS_WIDGET (widget)) { - g_idle_add (dummy_gtk_menu_item_activate, widget); + g_idle_add ((GSourceFunc) dummy_gtk_menu_item_activate, widget); // gtk_menu_item_activate (GTK_MENU_ITEM (widget)); _in_carbon_menu_event_handler = 0; return noErr; |