Change accelerators again to be more mac like
authorJoshua Pettus <jshpettus@gmail.com>
Sat, 30 Jan 2016 02:32:58 +0000 (21:32 -0500)
committerJoshua Pettus <jshpettus@gmail.com>
Sat, 30 Jan 2016 02:32:58 +0000 (21:32 -0500)
After playing around with the beta quite a bit, it really bothered me
to have half be ‘cmd’ and half be ‘ctrl’, to the point where it almost
made me want to do away with ‘cmd’ altogether  (really non-standard on
OSX). This way is a little smarter and only changes the conflicting
accelerators to alt-cmd which while being a little more mac standard,
as well as be acceptable ascetically when combined with other
accelerators that are just cmd.

gtk/xoptions.c

index c49d139..07295fd 100644 (file)
@@ -445,19 +445,29 @@ CreateMenuPopup (Option *opt, int n, int def)
            gtk_accelerator_parse(mb[i].accel, &accelerator_key, &accelerator_mods);
 #ifdef OSXAPP
           if(accelerator_mods & GDK_CONTROL_MASK &&
-             accelerator_key != 'v' &&          // don't use Cmd+V
+             accelerator_key != 'v' &&          // don't use Cmd+V as this is a OS text edit command
              accelerator_key != 'c' &&           // and Cmd+C
              accelerator_key != 'x' &&          // and CMD+X
-             accelerator_key != 'a' &&          // and CMD+A
-             accelerator_key != 'w' &&          // and evreything else in mode menu for umiformity's sake
-             accelerator_key != 'b' &&
-             accelerator_key != 't' &&
-             accelerator_key != 'g' &&
-             accelerator_key != 'e'
+             accelerator_key != 'a'           // and CMD+A
              ) {  // in OSX use Meta (Cmd) where Linux uses Ctrl
               accelerator_mods &= ~GDK_CONTROL_MASK; // clear Ctrl flag
               accelerator_mods |= GDK_META_MASK;     // set Meta flag
-           }
+                 } else if (accelerator_mods & GDK_CONTROL_MASK &&
+                                        accelerator_key == 'v' ||
+                                        accelerator_key == 'c' ||
+                                        accelerator_key == 'x' ||
+                                        accelerator_key == 'a'
+                                        ) { // For these conflicting commands, lets make them alt-cmd
+                         accelerator_mods &= ~GDK_CONTROL_MASK; // clear Ctrl flag
+                         accelerator_mods |= GDK_META_MASK;
+                         accelerator_mods |= GDK_MOD1_MASK;
+                 } 
+                 if (accelerator_mods & GDK_SHIFT_MASK &&
+                         GDK_META_MASK &&
+                         GDK_MOD1_MASK
+                         ) { // If there is a shift, we  can get rid of alt as it is awfully cumbersome to press
+                         accelerator_mods &= ~GDK_MOD1_MASK; // clear ALT flag
+                 }
 #endif
            gtk_widget_add_accelerator (GTK_WIDGET(entry), "activate",GtkAccelerators,
                                        accelerator_key, accelerator_mods, GTK_ACCEL_VISIBLE);