Merge branch 'master' into cairocanvas
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / binding_proxy.h
index a26c8ace2a6417e0abf5554a7dde67a2b221a161..b541582f6f669fb82a80ce7eb49ca245c7981463 100644 (file)
@@ -22,8 +22,9 @@
 #define __binding_proxy__
 
 #include <string>
-
 #include <gtkmm2ext/popup.h>
+#include <boost/shared_ptr.hpp>
+#include "pbd/signals.h"
 
 namespace PBD {
        class Controllable;
@@ -32,21 +33,24 @@ namespace PBD {
 class BindingProxy : public sigc::trackable
 {
    public:
-       BindingProxy (PBD::Controllable&);
-       virtual ~BindingProxy() {}
+       BindingProxy (boost::shared_ptr<PBD::Controllable>);
+       BindingProxy ();
+       virtual ~BindingProxy();
        
        void set_bind_button_state (guint button, guint statemask);
        void get_bind_button_state (guint &button, guint &statemask);
 
        bool button_press_handler (GdkEventButton *);
 
-  protected:
+       boost::shared_ptr<PBD::Controllable> get_controllable() const { return controllable; }
+       void set_controllable (boost::shared_ptr<PBD::Controllable>);
 
-       Gtkmm2ext::PopUp     prompter;
-       PBD::Controllable& controllable;
+  protected:
+       Gtkmm2ext::PopUp*  prompter;
+       boost::shared_ptr<PBD::Controllable> controllable;
        guint bind_button;
        guint bind_statemask;
-       sigc::connection learning_connection;
+       PBD::ScopedConnection learning_connection;
        void learning_finished ();
        bool prompter_hiding (GdkEventAny *);
 };