Processor box interaction:
authorRobin Gareus <robin@gareus.org>
Tue, 18 Oct 2016 20:25:02 +0000 (22:25 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 18 Oct 2016 20:26:23 +0000 (22:26 +0200)
Allow to toggle inline display with tertiary + double-click.
also fix tooltip and fix inconsistent modifiers on inline display.

gtk2_ardour/processor_box.cc
gtk2_ardour/processor_box.h

index 97f8f1a91867fffb995217abaced83bb3c2f47d7..3cf29725b115384ccafc64a6d16fa27213e7bcb0 100644 (file)
@@ -510,7 +510,7 @@ ProcessorEntry::setup_tooltip ()
                        }
                        if (pi->plugin()->has_editor()) {
                                ARDOUR_UI_UTILS::set_tooltip (_button,
-                                               string_compose (_("<b>%1</b>\nDouble-click to show GUI.\n%2+double-click to show generic GUI.%3"), name (Wide), Keyboard::primary_modifier_name (), postfix));
+                                               string_compose (_("<b>%1</b>\nDouble-click to show GUI.\n%2+double-click to show generic GUI.%3"), name (Wide), Keyboard::secondary_modifier_name (), postfix));
                        } else {
                                ARDOUR_UI_UTILS::set_tooltip (_button,
                                                string_compose (_("<b>%1</b>\nDouble-click to show generic GUI.%2"), name (Wide), postfix));
@@ -1569,11 +1569,20 @@ ProcessorEntry::PluginDisplay::on_button_press_event (GdkEventButton *ev)
 {
        assert (_entry.processor ());
 
+       boost::shared_ptr<PluginInsert> pi = boost::dynamic_pointer_cast<PluginInsert> (_entry.processor());
+       // duplicated code :(
        // consider some tweaks to pass this up to the DnDVBox somehow:
        // select processor, then call (private)
        //_entry._parent->processor_button_press_event (ev, &_entry);
-       if (Keyboard::is_edit_event (ev) || (ev->button == 1 && ev->type == GDK_2BUTTON_PRESS)) {
-               if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
+       if (pi && pi->plugin() && pi->plugin()->has_inline_display()
+                       && Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)
+                       && ev->button == 1
+                       && ev->type == GDK_2BUTTON_PRESS) {
+               _entry.toggle_inline_display_visibility ();
+               return true;
+       }
+       else if (Keyboard::is_edit_event (ev) || (ev->button == 1 && ev->type == GDK_2BUTTON_PRESS)) {
+               if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) {
                        _entry._parent->generic_edit_processor (_entry.processor ());
                } else {
                        _entry._parent->edit_processor (_entry.processor ());
@@ -2341,6 +2350,15 @@ ProcessorBox::processor_button_press_event (GdkEventButton *ev, ProcessorEntry*
        int ret = false;
        bool selected = processor_display.selected (child);
 
+       boost::shared_ptr<PluginInsert> pi = boost::dynamic_pointer_cast<PluginInsert> (processor);
+       if (pi && pi->plugin() && pi->plugin()->has_inline_display()
+                       && Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)
+                       && ev->button == 1
+                       && ev->type == GDK_2BUTTON_PRESS) {
+               child->toggle_inline_display_visibility ();
+               return true;
+       }
+
        if (processor && (Keyboard::is_edit_event (ev) || (ev->button == 1 && ev->type == GDK_2BUTTON_PRESS))) {
 
                if (_session->engine().connected()) {
index d7517d9e83da924eaa07e05bc2e961ca4bc95c45..330a920e87bc4eec49a7dd6be134083ae555cd5a 100644 (file)
@@ -158,6 +158,7 @@ public:
        /** Hide any widgets that should be hidden */
        virtual void hide_things ();
 
+       void toggle_inline_display_visibility ();
        void show_all_controls ();
        void hide_all_controls ();
        void add_control_state (XMLNode *) const;
@@ -236,7 +237,6 @@ private:
 
        std::list<Control*> _controls;
 
-       void toggle_inline_display_visibility ();
        void toggle_control_visibility (Control *);
        void toggle_panner_link ();
        void toggle_allow_feedback ();