From e557245bf782eef5bd90ec37dc8e3e813ad6831b Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Mon, 20 Jun 2022 19:56:10 -0500 Subject: [PATCH] implement group_override_modifier() (lib part) Consistently use Tertiary for Group Override on all platforms (and be consistent about it) Consistently use Primary-mod for Momentary on all platforms (partially reverts 47932f) Primary modifier is used for fine-adjust on knobs and sliders, with no analogous operation on switches. --- libs/gtkmm2ext/gtkmm2ext/keyboard.h | 3 +++ libs/gtkmm2ext/keyboard.cc | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/libs/gtkmm2ext/gtkmm2ext/keyboard.h b/libs/gtkmm2ext/gtkmm2ext/keyboard.h index 49aacb54f5..64d52462bb 100644 --- a/libs/gtkmm2ext/gtkmm2ext/keyboard.h +++ b/libs/gtkmm2ext/gtkmm2ext/keyboard.h @@ -80,6 +80,7 @@ class LIBGTKMM2EXT_API Keyboard : public sigc::trackable, PBD::Stateful static const char* button2_name (); static const char* momentary_push_name (); + static const char* group_override_event_name (); static const char* primary_modifier_short_name (); static const char* secondary_modifier_short_name (); @@ -165,6 +166,7 @@ class LIBGTKMM2EXT_API Keyboard : public sigc::trackable, PBD::Stateful static bool is_context_menu_event (GdkEventButton*); static bool is_button2_event (GdkEventButton*); static bool is_momentary_push_event (GdkEventButton*); + static bool is_group_override_event (GdkEventButton*); static Keyboard& the_keyboard() { return *_the_keyboard; } @@ -212,6 +214,7 @@ class LIBGTKMM2EXT_API Keyboard : public sigc::trackable, PBD::Stateful static guint snap_delta_mod; static guint button2_modifiers; static guint momentary_push_modifiers; + static guint group_override_modifiers; static Gtk::Window* current_window; static std::string user_keybindings_path; static bool can_save_keybindings; diff --git a/libs/gtkmm2ext/keyboard.cc b/libs/gtkmm2ext/keyboard.cc index e8aff1c460..87f37a2b9b 100644 --- a/libs/gtkmm2ext/keyboard.cc +++ b/libs/gtkmm2ext/keyboard.cc @@ -71,7 +71,6 @@ guint Keyboard::Level4Modifier = GDK_MOD1_MASK; // Alt/Option guint Keyboard::CopyModifier = GDK_CONTROL_MASK; // Control guint Keyboard::RangeSelectModifier = GDK_SHIFT_MASK; guint Keyboard::button2_modifiers = Keyboard::SecondaryModifier|Keyboard::Level4Modifier; -guint Keyboard::momentary_push_modifiers = Keyboard::TertiaryModifier; const char* Keyboard::primary_modifier_name() { return _("Command"); } const char* Keyboard::secondary_modifier_name() { return _("Control"); } @@ -79,7 +78,7 @@ const char* Keyboard::tertiary_modifier_name() { return S_("Key|Shift"); } const char* Keyboard::level4_modifier_name() { return _("Option"); } const char* Keyboard::button2_name() { return _("Middle Click (or Ctrl+Alt+Click)"); } // TODO build dynamically depending on Keyboard::button2_modifiers -const char* Keyboard::momentary_push_name() { return _("Shift+Click (or Middle-Click)"); } // TODO formay dynamically depending on Keyboard::momentary_push_modifiers -- Keyboard::tertiary_modifier_name +const char* Keyboard::momentary_push_name() { return _("Cmd+Click (or Middle-Click)"); } // TODO formay dynamically depending on Keyboard::momentary_push_modifiers -- Keyboard::tertiary_modifier_name const char* Keyboard::primary_modifier_short_name() { return _("Cmd"); } const char* Keyboard::secondary_modifier_short_name() { return _("Ctrl"); } @@ -98,7 +97,6 @@ guint Keyboard::Level4Modifier = GDK_MOD4_MASK|GDK_SUPER_MASK; // Mod4/Windows guint Keyboard::CopyModifier = GDK_CONTROL_MASK; guint Keyboard::RangeSelectModifier = GDK_SHIFT_MASK; guint Keyboard::button2_modifiers = 0; /* not used */ -guint Keyboard::momentary_push_modifiers = 0; /* not used */ const char* Keyboard::primary_modifier_name() { return _("Control"); } const char* Keyboard::secondary_modifier_name() { return _("Alt"); } @@ -106,7 +104,7 @@ const char* Keyboard::tertiary_modifier_name() { return S_("Key|Shift"); } const char* Keyboard::level4_modifier_name() { return _("Windows"); } const char* Keyboard::button2_name() { return _("Middle-Click"); } -const char* Keyboard::momentary_push_name() { return _("Middle-Click"); } +const char* Keyboard::momentary_push_name() { return _("Cmd+Click or Middle-Click"); } const char* Keyboard::primary_modifier_short_name() { return _("Ctrl"); } const char* Keyboard::secondary_modifier_short_name() { return _("Alt"); } @@ -118,6 +116,11 @@ guint Keyboard::snap_delta_mod = Keyboard::SecondaryModifier|Keyboard::Level4Mod #endif +guint Keyboard::momentary_push_modifiers = Keyboard::PrimaryModifier; + +guint Keyboard::group_override_modifiers = Keyboard::TertiaryModifier; +const char* Keyboard::group_override_event_name() { return tertiary_modifier_name(); } + guint Keyboard::GainFineScaleModifier = Keyboard::PrimaryModifier; guint Keyboard::GainExtraFineScaleModifier = Keyboard::SecondaryModifier; @@ -554,6 +557,12 @@ Keyboard::is_momentary_push_event (GdkEventButton* ev) ((ev->state & RelevantModifierKeyMask) == Keyboard::momentary_push_modifiers)); } +bool +Keyboard::is_group_override_event (GdkEventButton* ev) +{ + return ((ev->button == 1) && ((ev->state & RelevantModifierKeyMask) == Keyboard::group_override_modifiers)); +} + bool Keyboard::is_delete_event (GdkEventButton *ev) {