]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkmain.c
gtk: remove the private GTK_DEFAULT_ACCEL_MOD_MASK define
[~andy/gtk] / gtk / gtkmain.c
index 84bbb5f7715f5a2cbf883568d151aa83dbe8d26c..76645b963fb9837b10392e714eb200728502c452 100644 (file)
@@ -2659,3 +2659,50 @@ _gtk_single_string_accumulator (GSignalInvocationHint *ihint,
   
   return continue_emission;
 }
+
+GdkModifierType
+_gtk_replace_virtual_modifiers (GdkKeymap       *keymap,
+                                GdkModifierType  modifiers)
+{
+  GdkModifierType result = 0;
+  gint            i;
+
+  g_return_val_if_fail (GDK_IS_KEYMAP (keymap), 0);
+
+  for (i = 0; i < 8; i++) /* SHIFT...MOD5 */
+    {
+      GdkModifierType real = 1 << i;
+
+      if (modifiers & real)
+        {
+          GdkModifierType virtual = real;
+
+          gdk_keymap_add_virtual_modifiers (keymap, &virtual);
+
+          if (virtual == real)
+            result |= virtual;
+          else
+            result |= virtual & ~real;
+        }
+    }
+
+  return result;
+}
+
+GdkModifierType
+_gtk_get_primary_accel_mod (void)
+{
+  static GdkModifierType primary = 0;
+
+  if (! primary)
+    {
+      GdkDisplay *display = gdk_display_get_default ();
+
+      primary = gdk_keymap_get_modifier_mask (gdk_keymap_get_for_display (display),
+                                              GDK_MODIFIER_INTENT_PRIMARY_ACCELERATOR);
+      primary = _gtk_replace_virtual_modifiers (gdk_keymap_get_for_display (display),
+                                                primary);
+    }
+
+  return primary;
+}