misc panning related UI tweaks:
authorRobin Gareus <robin@gareus.org>
Mon, 13 Jan 2014 10:08:37 +0000 (11:08 +0100)
committerRobin Gareus <robin@gareus.org>
Mon, 13 Jan 2014 10:08:37 +0000 (11:08 +0100)
* connect 2D panner "edit" to big window
* disconnect 2D-panner GUI when it's visible but panner-type changes
* ignore mixer-strip level-meter context-menu for Aux-sends

gtk2_ardour/mixer_strip.cc
gtk2_ardour/panner2d.cc
gtk2_ardour/panner_ui.cc

index 3a3c39ea17e833d8b12e2a12979ed068d6e34712..780e8078c64a10777cf47948256ac1a7113f5a7f 100644 (file)
@@ -2149,6 +2149,9 @@ MixerStrip::ab_plugins ()
 bool
 MixerStrip::level_meter_button_press (GdkEventButton* ev)
 {
+       if (_current_delivery && boost::dynamic_pointer_cast<Send>(_current_delivery)) {
+               return false;
+       }
        if (ev->button == 3) {
                popup_level_meter_menu (ev);
                return true;
index c59523abe34f91668242c48531bf2d018238bd03..9de8123ea82c9d8a31e096e6abde9f053ba67850 100644 (file)
@@ -201,6 +201,14 @@ void
 Panner2d::handle_state_change ()
 {
        panconnect.drop_connections();
+       if (!panner_shell->panner()) {
+               /* we should really self-destruct the UI here
+                * -> * PannerUI::set_panner() -> delete
+                */
+               queue_draw ();
+               return;
+       }
+
        panner_shell->panner()->SignalPositionChanged.connect (panconnect, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context());
 
         set<Evoral::Parameter> params = panner_shell->panner()->what_can_be_automated();
index 3ee794e5781ccdc628f0439b7ec0ea186bae4ede..3602225c8887706b8bb73dd3c661bc962f92cdd2 100644 (file)
@@ -417,6 +417,11 @@ PannerUI::pan_edit ()
                _mono_panner->edit ();
        } else if (_stereo_panner) {
                _stereo_panner->edit ();
+       } else if (twod_panner) {
+               if (!big_window) {
+                       big_window = new Panner2dWindow (_panshell, 400, _panner->in().n_audio());
+               }
+               big_window->show ();
        }
 }