remove HYPER,SUPER,META modifier masks from Keyboard::RelevantModifierMask so that...
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 18 Feb 2016 14:44:50 +0000 (09:44 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 18 Feb 2016 14:44:50 +0000 (09:44 -0500)
GTK on OS X adds META when Command is pressed even though it also uses MOD2 to indicate COMMAND. So Cmd-w was actually META-MOD2-w and modifier_state_equals(MOD2)
would fail. This should have nothing but good side effects

libs/gtkmm2ext/keyboard.cc

index 3d329faa0dc4e19573d431a1a2cab7b925d64736..0f9aeb028ff1fa1d3a3e2c89909c48bd18f6627d 100644 (file)
@@ -143,6 +143,18 @@ Keyboard::Keyboard ()
 
        RelevantModifierKeyMask = (GdkModifierType) gtk_accelerator_get_default_mod_mask ();
 
+#ifdef __APPLE__
+        /* Remove SUPER,HYPER,META.
+         *
+         * GTK on OS X adds META when Command is pressed for various indefensible reasons, since
+         * it also uses MOD2 to indicate Command.
+         */
+
+       RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~GDK_SUPER_MASK);
+       RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~GDK_HYPER_MASK);
+       RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~GDK_META_MASK);
+#endif
+
        RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | PrimaryModifier);
        RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | SecondaryModifier);
        RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | TertiaryModifier);