summaryrefslogtreecommitdiff
path: root/gtk2_ardour/keyboard.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-11-03 17:05:17 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-11-03 17:05:17 +0000
commitbb520383a374789783321d4c19d71c97541c4315 (patch)
treeb3770a9d8edc291164038deafb6299658e83dfa8 /gtk2_ardour/keyboard.cc
parent1ae268ad2a817a7d6843ce09efb32f3dc0fa6281 (diff)
meta-fy handling of button2, to deal with apple's messed up design decisions; on gtk/osx, button2 is (currently) Ctrl-Option-Button1
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4087 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/keyboard.cc')
-rw-r--r--gtk2_ardour/keyboard.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/gtk2_ardour/keyboard.cc b/gtk2_ardour/keyboard.cc
index e5fb8d8b10..4b0a810429 100644
--- a/gtk2_ardour/keyboard.cc
+++ b/gtk2_ardour/keyboard.cc
@@ -61,6 +61,7 @@ guint Keyboard::TertiaryModifier = GDK_SHIFT_MASK; // Shift
guint Keyboard::Level4Modifier = GDK_CONTROL_MASK; // Control
guint Keyboard::CopyModifier = GDK_MOD1_MASK; // Alt/Option
guint Keyboard::RangeSelectModifier = GDK_SHIFT_MASK;
+guint Keyboard::button2_modifiers = Keyboard::SecondaryModifier|Keyboard::Level4Modifier;
#else
guint Keyboard::PrimaryModifier = GDK_CONTROL_MASK; // Control
guint Keyboard::SecondaryModifier = GDK_MOD1_MASK; // Alt/Option
@@ -68,8 +69,10 @@ guint Keyboard::TertiaryModifier = GDK_SHIFT_MASK; // Shift
guint Keyboard::Level4Modifier = GDK_MOD4_MASK; // Mod4/Windows
guint Keyboard::CopyModifier = GDK_CONTROL_MASK;
guint Keyboard::RangeSelectModifier = GDK_SHIFT_MASK;
+guint Keyboard::button2_modifiers = 0; /* not used */
#endif
+
Keyboard* Keyboard::_the_keyboard = 0;
Gtk::Window* Keyboard::current_window = 0;
bool Keyboard::_some_magic_widget_has_focus = false;
@@ -376,6 +379,18 @@ Keyboard::is_edit_event (GdkEventButton *ev)
}
bool
+Keyboard::is_button2_event (GdkEventButton* ev)
+{
+#ifdef GTKOSX
+ return (ev->button == 2) ||
+ ((ev->button == 1) &&
+ ((ev->state & Keyboard::button2_modifiers) == Keyboard::button2_modifiers));
+#else
+ return ev->button == 2;
+#endif
+}
+
+bool
Keyboard::is_delete_event (GdkEventButton *ev)
{
return (ev->type == GDK_BUTTON_PRESS || ev->type == GDK_BUTTON_RELEASE) &&