fix conflicts caused by meterbridge merge
[ardour.git] / gtk2_ardour / processor_box.cc
index 04c261e2e1895da90012117b41bcef1e5697e90d..495845d2d465da572b7226ca95141a3dbf1e9d58 100644 (file)
@@ -1066,6 +1066,8 @@ ProcessorBox::processor_button_press_event (GdkEventButton *ev, ProcessorEntry*
                if (_session->engine().connected()) {
                        /* XXX giving an error message here is hard, because we may be in the midst of a button press */
 
+                       if (!one_processor_can_be_edited ()) return true;
+
                        if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) {
                                generic_edit_processor (processor);
                        } else {
@@ -2029,7 +2031,7 @@ ProcessorBox::processor_can_be_edited (boost::shared_ptr<Processor> processor)
        }
 
        if (
-               (boost::dynamic_pointer_cast<Send> (processor) && !boost::dynamic_pointer_cast<InternalSend> (processor))||
+               boost::dynamic_pointer_cast<Send> (processor) ||
                boost::dynamic_pointer_cast<Return> (processor) ||
                boost::dynamic_pointer_cast<PluginInsert> (processor) ||
                boost::dynamic_pointer_cast<PortInsert> (processor)
@@ -2082,17 +2084,8 @@ ProcessorBox::get_editor_window (boost::shared_ptr<Processor> processor, bool us
                }
 
                if (boost::dynamic_pointer_cast<InternalSend> (processor) == 0) {
-                       SendUIWindow* w = new SendUIWindow (send, _session);
-                       w->show ();
-               } else {
-                       /* assign internal send to main fader */
-                       if (_parent_strip) {
-                               if (_parent_strip->current_delivery() == send) {
-                                       _parent_strip->revert_to_default_display ();
-                               } else {
-                                       _parent_strip->show_send(send);
-                               }
-                       } 
+
+                       gidget = new SendUIWindow (send, _session);
                }
 
        } else if ((retrn = boost::dynamic_pointer_cast<Return> (processor)) != 0) {
@@ -2440,13 +2433,34 @@ ProcessorBox::rb_edit ()
        _current_processor_box->for_selected_processors (&ProcessorBox::edit_processor);
 }
 
+bool
+ProcessorBox::edit_aux_send (boost::shared_ptr<Processor> processor)
+{
+       if (boost::dynamic_pointer_cast<InternalSend> (processor) == 0) {
+               return false;
+       }
+
+       if (_parent_strip) {
+               boost::shared_ptr<Send> send = boost::dynamic_pointer_cast<Send> (processor);
+               if (_parent_strip->current_delivery() == send) {
+                       _parent_strip->revert_to_default_display ();
+               } else {
+                       _parent_strip->show_send(send);
+               }
+       }
+       return true;
+}
+
 void
 ProcessorBox::edit_processor (boost::shared_ptr<Processor> processor)
 {
        if (!processor) {
                return;
        }
-       
+       if (edit_aux_send (processor)) {
+               return;
+       }
+
        ProcessorWindowProxy* proxy = find_window_proxy (processor);
 
        if (proxy) {
@@ -2461,7 +2475,10 @@ ProcessorBox::generic_edit_processor (boost::shared_ptr<Processor> processor)
        if (!processor) {
                return;
        }
-       
+       if (edit_aux_send (processor)) {
+               return;
+       }
+
        ProcessorWindowProxy* proxy = find_window_proxy (processor);
 
        if (proxy) {