summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor.h1
-rw-r--r--gtk2_ardour/editor_mixer.cc12
-rw-r--r--gtk2_ardour/editor_ops.cc9
-rw-r--r--gtk2_ardour/mixer.bindings1
-rw-r--r--gtk2_ardour/mixer_strip.cc5
-rw-r--r--gtk2_ardour/mixer_strip.h1
6 files changed, 28 insertions, 1 deletions
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 0ef35d7be7..09b0d9e05b 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -308,6 +308,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void set_selected_mixer_strip (TimeAxisView&);
void mixer_strip_width_changed ();
bool mixer_strip_enter_event ( GdkEventCrossing * );
+ bool mixer_strip_leave_event ( GdkEventCrossing * );
void hide_track_in_display (TimeAxisView* tv, bool apply_to_selection = false);
/* nudge is initiated by transport controls owned by ARDOUR_UI */
diff --git a/gtk2_ardour/editor_mixer.cc b/gtk2_ardour/editor_mixer.cc
index b9a711c2ec..2154da5d70 100644
--- a/gtk2_ardour/editor_mixer.cc
+++ b/gtk2_ardour/editor_mixer.cc
@@ -185,6 +185,7 @@ Editor::create_editor_mixer ()
current_mixer_strip->set_embedded (true);
current_mixer_strip->signal_enter_notify_event().connect (sigc::mem_fun(*this, &Editor::mixer_strip_enter_event ));
+ current_mixer_strip->signal_leave_notify_event().connect (sigc::mem_fun(*this, &Editor::mixer_strip_leave_event ));
}
@@ -195,6 +196,17 @@ Editor::mixer_strip_enter_event (GdkEventCrossing *ev)
return false;
}
+bool
+Editor::mixer_strip_leave_event (GdkEventCrossing *ev)
+{
+ //if we have moved outside our strip, but not into a child view, then deselect ourselves
+ if ( !(ev->detail == GDK_NOTIFY_INFERIOR) ) {
+ current_mixer_strip->set_selected(false);
+ }
+
+ return false;
+}
+
void
Editor::set_selected_mixer_strip (TimeAxisView& view)
{
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index edf0570ec7..5987c545e1 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -76,6 +76,7 @@
#include "interthread_progress_window.h"
#include "keyboard.h"
#include "midi_region_view.h"
+#include "mixer_strip.h"
#include "mouse_cursors.h"
#include "normalize_dialog.h"
#include "patch_change_dialog.h"
@@ -3731,7 +3732,13 @@ Editor::bounce_range_selection (bool replace, bool enable_processing)
void
Editor::delete_ ()
{
- cut_copy (Delete);
+ //special case: if the user is pointing in the editor/mixer strip, they may be trying to delete a plugin.
+ //we need this because the editor-mixer strip is in the editor window, so it doesn't get the bindings from the mix window
+ //TODO: perhaps someday we need to accomodate the other bindings such as mute, solo, etc.
+ if ( current_mixer_strip && current_mixer_strip->is_selected() )
+ current_mixer_strip->delete_processors ();
+ else
+ cut_copy (Delete);
}
/** Cut selected regions, automation points or a time range */
diff --git a/gtk2_ardour/mixer.bindings b/gtk2_ardour/mixer.bindings
index bd5ec90458..e6af4cf3ce 100644
--- a/gtk2_ardour/mixer.bindings
+++ b/gtk2_ardour/mixer.bindings
@@ -14,6 +14,7 @@
<Binding key="Primary-c" action="Mixer/copy-processors"/>
<Binding key="Primary-v" action="Mixer/paste-processors"/>
<Binding key="Delete" action="Mixer/delete-processors"/>
+ <Binding key="Backspace" action="Mixer/delete-processors"/>
<Binding key="Return" action="Mixer/toggle-processors"/>
<Binding key="Primary-a" action="Mixer/select-all-processors"/>
<Binding key="Slash" action="Mixer/ab-plugins"/>
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 3fc5347827..c0751d2727 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -1612,6 +1612,11 @@ MixerStrip::set_selected (bool yn)
global_frame.set_name ("MixerStripFrame");
}
global_frame.queue_draw ();
+
+ if (!yn) { //if deselected, clear keyboard focus in the gain display. this is cheesy but fixes a longstanding bug
+ gpm.gain_display.set_sensitive(false);
+ gpm.gain_display.set_sensitive(true);
+ }
}
void
diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h
index 4889811415..ec6fb28fe8 100644
--- a/gtk2_ardour/mixer_strip.h
+++ b/gtk2_ardour/mixer_strip.h
@@ -131,6 +131,7 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
void ab_plugins ();
void set_selected(bool yn);
+ bool is_selected() {return _selected;}
protected:
friend class Mixer_UI;