fix definition of PrimaryModifier for Keyboard for OS X
[ardour.git] / libs / gtkmm2ext / keyboard.cc
index 983edbd0cf0cde30bf4c4c52e2dc50af383aaeec..135e1fdc5650bf0f94e65e885c02aafcf088608f 100644 (file)
@@ -42,8 +42,9 @@
 #include "gtkmm2ext/bindings.h"
 #include "gtkmm2ext/keyboard.h"
 #include "gtkmm2ext/debug.h"
+#include "gtkmm2ext/utils.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace PBD;
 using namespace Gtk;
@@ -59,7 +60,7 @@ guint Keyboard::insert_note_mod = GDK_CONTROL_MASK;
 
 #ifdef __APPLE__
 
-uint Keyboard::PrimaryModifier = GDK_META_MASK|GDK_MOD2_MASK;   // Command
+uint Keyboard::PrimaryModifier = GDK_MOD2_MASK;   // Command
 guint Keyboard::SecondaryModifier = GDK_CONTROL_MASK; // Control
 guint Keyboard::TertiaryModifier = GDK_SHIFT_MASK; // Shift
 guint Keyboard::Level4Modifier = GDK_MOD1_MASK; // Alt/Option
@@ -72,6 +73,11 @@ const char* Keyboard::secondary_modifier_name() { return _("Control"); }
 const char* Keyboard::tertiary_modifier_name() { return S_("Key|Shift"); }
 const char* Keyboard::level4_modifier_name() { return _("Option"); }
 
+const char* Keyboard::primary_modifier_short_name() { return _("Cmd"); }
+const char* Keyboard::secondary_modifier_short_name() { return _("Ctrl"); }
+const char* Keyboard::tertiary_modifier_short_name() { return S_("Key|Shift"); }
+const char* Keyboard::level4_modifier_short_name() { return _("Opt"); }
+
 guint Keyboard::snap_mod = Keyboard::Level4Modifier|Keyboard::TertiaryModifier; // XXX this is probably completely wrong
 guint Keyboard::snap_delta_mod = Keyboard::Level4Modifier;
 
@@ -90,6 +96,11 @@ const char* Keyboard::secondary_modifier_name() { return _("Alt"); }
 const char* Keyboard::tertiary_modifier_name() { return S_("Key|Shift"); }
 const char* Keyboard::level4_modifier_name() { return _("Windows"); }
 
+const char* Keyboard::primary_modifier_short_name() { return _("Ctrl"); }
+const char* Keyboard::secondary_modifier_short_name() { return _("Alt"); }
+const char* Keyboard::tertiary_modifier_short_name() { return S_("Key|Shift"); }
+const char* Keyboard::level4_modifier_short_name() { return _("Win"); }
+
 guint Keyboard::snap_mod = Keyboard::SecondaryModifier;
 guint Keyboard::snap_delta_mod = Keyboard::SecondaryModifier|Keyboard::Level4Modifier;
 
@@ -262,64 +273,6 @@ Keyboard::_snooper (GtkWidget *widget, GdkEventKey *event, gpointer data)
        return ((Keyboard *) data)->snooper (widget, event);
 }
 
-static string
-show_gdk_event_state (int state)
-{
-       string s;
-       if (state & GDK_SHIFT_MASK) {
-               s += "+SHIFT";
-       }
-       if (state & GDK_LOCK_MASK) {
-               s += "+LOCK";
-       }
-       if (state & GDK_CONTROL_MASK) {
-               s += "+CONTROL";
-       }
-       if (state & GDK_MOD1_MASK) {
-               s += "+MOD1";
-       }
-       if (state & GDK_MOD2_MASK) {
-               s += "+MOD2";
-       }
-       if (state & GDK_MOD3_MASK) {
-               s += "+MOD3";
-       }
-       if (state & GDK_MOD4_MASK) {
-               s += "+MOD4";
-       }
-       if (state & GDK_MOD5_MASK) {
-               s += "+MOD5";
-       }
-       if (state & GDK_BUTTON1_MASK) {
-               s += "+BUTTON1";
-       }
-       if (state & GDK_BUTTON2_MASK) {
-               s += "+BUTTON2";
-       }
-       if (state & GDK_BUTTON3_MASK) {
-               s += "+BUTTON3";
-       }
-       if (state & GDK_BUTTON4_MASK) {
-               s += "+BUTTON4";
-       }
-       if (state & GDK_BUTTON5_MASK) {
-               s += "+BUTTON5";
-       }
-       if (state & GDK_SUPER_MASK) {
-               s += "+SUPER";
-       }
-       if (state & GDK_HYPER_MASK) {
-               s += "+HYPER";
-       }
-       if (state & GDK_META_MASK) {
-               s += "+META";
-       }
-       if (state & GDK_RELEASE_MASK) {
-               s += "+RELEASE";
-       }
-
-       return s;
-}
 
 gint
 Keyboard::snooper (GtkWidget *widget, GdkEventKey *event)
@@ -477,6 +430,7 @@ Keyboard::leave_window (GdkEventCrossing *ev, Gtk::Window* /*win*/)
                        current_window = 0;
                }
        } else {
+               DEBUG_TRACE (DEBUG::Keyboard, "LEAVE window without event\n");
                current_window = 0;
        }
 
@@ -498,7 +452,9 @@ Keyboard::focus_out_window (GdkEventFocus * ev, Gtk::Window* win)
                state.clear ();
                current_window = 0;
        }  else {
-               current_window = 0;
+               if (win == current_window) {
+                       current_window = 0;
+               }
        }
 
        DEBUG_TRACE (DEBUG::Keyboard, string_compose ("Foucusing out window, title = %1\n", win->get_title()));