#include "return_ui.h"
#include "route_processor_selection.h"
#include "send_ui.h"
-#include "utils.h"
#include "i18n.h"
ProcessorEntry::ProcessorEntry (ProcessorBox* parent, boost::shared_ptr<Processor> p, Width w)
: _button (ArdourButton::led_default_elements)
, _position (PreFader)
+ , _selectable(true)
, _parent (parent)
, _processor (p)
, _width (w)
return false;
}
-void
+bool
ProcessorBox::processor_operation (ProcessorOperation op)
{
ProcSelection targets;
get_selected_processors (targets);
- if (targets.empty()) {
+/* if (targets.empty()) {
int x, y;
processor_display.get_pointer (x, y);
targets.push_back (pointer.first->processor ());
}
}
+*/
+ if ( (op == ProcessorsDelete) && targets.empty() )
+ return false; //nothing to delete. return false so the editor-mixer, because the user was probably intending to delete something in the editor
+
switch (op) {
case ProcessorsSelectAll:
processor_display.select_all ();
break;
+ case ProcessorsSelectNone:
+ processor_display.select_none ();
+ break;
+
case ProcessorsCopy:
copy_processors (targets);
break;
default:
break;
}
+
+ return true;
}
ProcessorWindowProxy*
}
boost::shared_ptr<PluginInsert> plugin_insert = boost::dynamic_pointer_cast<PluginInsert> (processor);
+
ProcessorEntry* e = 0;
if (plugin_insert) {
e = new PluginInsertProcessorEntry (this, plugin_insert, _width);
e = new ProcessorEntry (this, processor, _width);
}
+ boost::shared_ptr<Send> send = boost::dynamic_pointer_cast<Send> (processor);
+ boost::shared_ptr<PortInsert> ext = boost::dynamic_pointer_cast<PortInsert> (processor);
+
+ //faders and meters are not deletable, copy/paste-able, so they shouldn't be selectable
+ if (!send && !plugin_insert && !ext)
+ e->set_selectable(false);
+
/* Set up this entry's state from the GUIObjectState */
XMLNode* proc = entry_gui_object_state (e);
if (proc) {