if (Keyboard::is_delete_event (&event->button)) {
fade[current].points.remove (point);
delete point;
- }
+ }
redraw ();
break;
// if dragging with button2, the motion is x constrained, with Alt-button2 it is y constrained
- if (event->button.button == 2) {
+ if (Keyboard::is_button2_event (&event->button)) {
if (Keyboard::modifier_state_equals (event->button.state, Keyboard::SecondaryModifier)) {
drag_info.y_constrained = true;
drag_info.x_constrained = false;
} else {
- if (ev->button == 2) {
+ if (Keyboard::is_button2_event(ev)) {
// Primary-button2 click is the midi binding click
// button2-click is "momentary"
}
}
- if (ev->button == 1 || ev->button == 2) {
+ if (ev->button == 1 || Keyboard::is_button2_event (ev)) {
if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) {
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
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;
((ev->state & RelevantModifierKeyMask) == Keyboard::edit_modifier());
}
+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)
{
static bool is_edit_event (GdkEventButton*);
static bool is_delete_event (GdkEventButton*);
static bool is_context_menu_event (GdkEventButton*);
+ static bool is_button2_event (GdkEventButton*);
static Keyboard& the_keyboard() { return *_the_keyboard; }
static guint delete_but;
static guint delete_mod;
static guint snap_mod;
+ static guint button2_modifiers;
static Gtk::Window* current_window;
static std::string user_keybindings_path;
static bool can_save_keybindings;
show_redirect_menu(ev->time);
ret = true;
- } else if (redirect && (ev->button == 2) && (Keyboard::no_modifier_keys_pressed (ev) && ((ev->state & Gdk::BUTTON2_MASK) == Gdk::BUTTON2_MASK))) {
+ } else if (redirect && Keyboard::is_button2_event (ev) && (Keyboard::no_modifier_keys_pressed (ev) && ((ev->state & Gdk::BUTTON2_MASK) == Gdk::BUTTON2_MASK))) {
/* button2-click with no modifiers */
} else {
- if (ev->button == 2) {
+ if (Keyboard::is_button2_event (ev)) {
// Primary-button2 click is the midi binding click
// button2-click is "momentary"
}
}
- if (ev->button == 1 || ev->button == 2) {
+ if (ev->button == 1 || Keyboard::is_button2_event (ev)) {
if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) {
} else {
- if (ev->button == 2) {
+ if (Keyboard::is_button2_event (ev)) {
// Primary-button2 click is the midi binding click
// button2-click is "momentary"
}
}
- if (ev->button == 1 || ev->button == 2) {
+ if (ev->button == 1 || Keyboard::is_button2_event (ev)) {
if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) {
if (!ignore_toggle && is_track() && rec_enable_button) {
- if (ev->button == 2 && Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
+ if (Keyboard::is_button2_event (ev) && Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
// do nothing on midi bind event
return false;