major design changes: use glib event loop for MIDI thread/UI; rework design of BaseUI...
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / binding_proxy.h
index dd9b94319df27df59d3257a1051d172d158e3c1d..f684cce5c3e76e1e0d201cd237ac052c596ad2de 100644 (file)
@@ -24,6 +24,7 @@
 #include <string>
 
 #include <gtkmm2ext/popup.h>
+#include <boost/shared_ptr.hpp>
 
 namespace PBD {
        class Controllable;
@@ -32,7 +33,8 @@ namespace PBD {
 class BindingProxy : public sigc::trackable
 {
    public:
-       BindingProxy (PBD::Controllable&);
+       BindingProxy (boost::shared_ptr<PBD::Controllable>);
+       BindingProxy ();
        virtual ~BindingProxy();
        
        void set_bind_button_state (guint button, guint statemask);
@@ -40,11 +42,12 @@ class BindingProxy : public sigc::trackable
 
        bool button_press_handler (GdkEventButton *);
 
-       PBD::Controllable* get_controllable() { return &controllable; }
-  protected:
+       boost::shared_ptr<PBD::Controllable> get_controllable() { return controllable; }
+       void set_controllable (boost::shared_ptr<PBD::Controllable>);
 
+  protected:
        Gtkmm2ext::PopUp*  prompter;
-       PBD::Controllable& controllable;
+       boost::shared_ptr<PBD::Controllable> controllable;
        guint bind_button;
        guint bind_statemask;
        sigc::connection learning_connection;