changes to support making RouteUI and its children and relations able to switch the...
[ardour.git] / libs / gtkmm2ext / binding_proxy.cc
index 90f95f82ef44b174d8241acc5ba477e91f357412..f75b6ee5c69ae2754de8194406962706de5325c2 100644 (file)
@@ -31,7 +31,7 @@ using namespace Gtkmm2ext;
 using namespace std;
 using namespace PBD;
 
-BindingProxy::BindingProxy (Controllable& c)
+BindingProxy::BindingProxy (Controllable* c)
        : prompter (0),
          controllable (c),
          bind_button (2),
@@ -40,6 +40,15 @@ BindingProxy::BindingProxy (Controllable& c)
 {                        
 }
 
+BindingProxy::BindingProxy (Controllable& c)
+       : prompter (0),
+         controllable (&c),
+         bind_button (2),
+         bind_statemask (Gdk::CONTROL_MASK)
+
+{                        
+}
+
 BindingProxy::~BindingProxy ()
 {
        if (prompter) {
@@ -47,6 +56,13 @@ BindingProxy::~BindingProxy ()
        }
 }
 
+void
+BindingProxy::set_controllable (Controllable* c)
+{
+       learning_finished ();
+       controllable = c;
+}
+
 void
 BindingProxy::set_bind_button_state (guint button, guint statemask)
 {
@@ -65,7 +81,7 @@ bool
 BindingProxy::button_press_handler (GdkEventButton *ev)
 {
        if ((ev->state & bind_statemask) && ev->button == bind_button) { 
-               if (Controllable::StartLearning (&controllable)) {
+               if (Controllable::StartLearning (controllable)) {
                        string prompt = _("operate controller now");
                        if (prompter == 0) {
                                prompter = new PopUp (Gtk::WIN_POS_MOUSE, 30000, false);
@@ -73,7 +89,7 @@ BindingProxy::button_press_handler (GdkEventButton *ev)
                        }
                        prompter->set_text (prompt);
                        prompter->touch (); // shows popup
-                       learning_connection = controllable.LearningFinished.connect (mem_fun (*this, &BindingProxy::learning_finished));
+                       learning_connection = controllable->LearningFinished.connect (mem_fun (*this, &BindingProxy::learning_finished));
                }
                return true;
        }
@@ -95,7 +111,7 @@ bool
 BindingProxy::prompter_hiding (GdkEventAny *ev)
 {
        learning_connection.disconnect ();
-       Controllable::StopLearning (&controllable);
+       Controllable::StopLearning (controllable);
        return false;
 }