diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-08 16:07:28 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-08 16:07:28 +0000 |
commit | 3be16e8afbd891c0bfe7227158384ed0d127597f (patch) | |
tree | 73a8f761fc13cbd0613d3923a34748bb9aa761d2 /libs/gtkmm2ext | |
parent | a9bb336fc44ab4937978f5a0308e440ed632ea50 (diff) |
partial patch/partial by-hand merge of 2.X commits 3169&3170 to 3.X codebase
git-svn-id: svn://localhost/ardour2/branches/3.0@4300 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/gtkmm2ext')
-rw-r--r-- | libs/gtkmm2ext/binding_proxy.cc | 21 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/barcontroller.h | 2 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/bindable_button.h | 14 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/binding_proxy.h | 2 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/slider_controller.h | 7 | ||||
-rw-r--r-- | libs/gtkmm2ext/slider_controller.cc | 9 |
6 files changed, 35 insertions, 20 deletions
diff --git a/libs/gtkmm2ext/binding_proxy.cc b/libs/gtkmm2ext/binding_proxy.cc index 6c60deaa8f..845146239d 100644 --- a/libs/gtkmm2ext/binding_proxy.cc +++ b/libs/gtkmm2ext/binding_proxy.cc @@ -40,6 +40,14 @@ BindingProxy::BindingProxy (boost::shared_ptr<Controllable> c) { } +BindingProxy::BindingProxy () + : prompter (0), + bind_button (2), + bind_statemask (Gdk::CONTROL_MASK) + +{ +} + BindingProxy::~BindingProxy () { if (prompter) { @@ -48,6 +56,13 @@ BindingProxy::~BindingProxy () } void +BindingProxy::set_controllable (boost::shared_ptr<Controllable> c) +{ + learning_finished (); + controllable = c; +} + +void BindingProxy::set_bind_button_state (guint button, guint statemask) { bind_button = button; @@ -64,7 +79,7 @@ BindingProxy::get_bind_button_state (guint &button, guint &statemask) bool BindingProxy::button_press_handler (GdkEventButton *ev) { - if ((ev->state & bind_statemask) && ev->button == bind_button) { + if (controllable && (ev->state & bind_statemask) && ev->button == bind_button) { if (Controllable::StartLearning (controllable.get())) { string prompt = _("operate controller now"); if (prompter == 0) { @@ -95,7 +110,9 @@ bool BindingProxy::prompter_hiding (GdkEventAny *ev) { learning_connection.disconnect (); - Controllable::StopLearning (controllable.get()); + if (controllable) { + Controllable::StopLearning (controllable.get()); + } return false; } diff --git a/libs/gtkmm2ext/gtkmm2ext/barcontroller.h b/libs/gtkmm2ext/gtkmm2ext/barcontroller.h index 5e9a6fed90..2c0ca948d9 100644 --- a/libs/gtkmm2ext/gtkmm2ext/barcontroller.h +++ b/libs/gtkmm2ext/gtkmm2ext/barcontroller.h @@ -63,7 +63,9 @@ class BarController : public Gtk::Frame /* export this to allow direct connection to button events */ Gtk::Widget& event_widget() { return darea; } + boost::shared_ptr<PBD::Controllable> get_controllable() { return binding_proxy.get_controllable(); } + void set_controllable(boost::shared_ptr<PBD::Controllable> c) { binding_proxy.set_controllable(c); } protected: Gtk::Adjustment& adjustment; diff --git a/libs/gtkmm2ext/gtkmm2ext/bindable_button.h b/libs/gtkmm2ext/gtkmm2ext/bindable_button.h index 844dc27d08..3fad7d1faa 100644 --- a/libs/gtkmm2ext/gtkmm2ext/bindable_button.h +++ b/libs/gtkmm2ext/gtkmm2ext/bindable_button.h @@ -32,10 +32,8 @@ namespace PBD { class BindableToggleButton : public Gtkmm2ext::StatefulToggleButton { public: - BindableToggleButton (boost::shared_ptr<PBD::Controllable> c) : binding_proxy (c) {} - - explicit BindableToggleButton (boost::shared_ptr<PBD::Controllable> c, const std::string &label) - : Gtkmm2ext::StatefulToggleButton (label), binding_proxy (c) {} + BindableToggleButton (const std::string &label) + : Gtkmm2ext::StatefulToggleButton (label) {} virtual ~BindableToggleButton() {} @@ -49,7 +47,8 @@ class BindableToggleButton : public Gtkmm2ext::StatefulToggleButton } boost::shared_ptr<PBD::Controllable> get_controllable() { return binding_proxy.get_controllable(); } - + void set_controllable (boost::shared_ptr<PBD::Controllable> c) { binding_proxy.set_controllable (c); } + private: BindingProxy binding_proxy; }; @@ -58,10 +57,6 @@ class BindableButton : public Gtkmm2ext::StatefulButton { public: BindableButton (boost::shared_ptr<PBD::Controllable> c) : binding_proxy (c) {} - - explicit BindableButton (boost::shared_ptr<PBD::Controllable> c, const std::string &label) - : Gtkmm2ext::StatefulButton (label), binding_proxy (c) {} - ~BindableButton() {} bool on_button_press_event (GdkEventButton *ev) { @@ -74,6 +69,7 @@ class BindableButton : public Gtkmm2ext::StatefulButton } boost::shared_ptr<PBD::Controllable> get_controllable() { return binding_proxy.get_controllable(); } + void set_controllable (boost::shared_ptr<PBD::Controllable> c) { binding_proxy.set_controllable (c); } private: BindingProxy binding_proxy; diff --git a/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h b/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h index ecb95bf815..f684cce5c3 100644 --- a/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h +++ b/libs/gtkmm2ext/gtkmm2ext/binding_proxy.h @@ -34,6 +34,7 @@ class BindingProxy : public sigc::trackable { public: BindingProxy (boost::shared_ptr<PBD::Controllable>); + BindingProxy (); virtual ~BindingProxy(); void set_bind_button_state (guint button, guint statemask); @@ -42,6 +43,7 @@ class BindingProxy : public sigc::trackable bool button_press_handler (GdkEventButton *); boost::shared_ptr<PBD::Controllable> get_controllable() { return controllable; } + void set_controllable (boost::shared_ptr<PBD::Controllable>); protected: Gtkmm2ext::PopUp* prompter; diff --git a/libs/gtkmm2ext/gtkmm2ext/slider_controller.h b/libs/gtkmm2ext/gtkmm2ext/slider_controller.h index 46f70dacd8..7fea4a40d7 100644 --- a/libs/gtkmm2ext/gtkmm2ext/slider_controller.h +++ b/libs/gtkmm2ext/gtkmm2ext/slider_controller.h @@ -41,7 +41,6 @@ class SliderController : public Gtkmm2ext::PixFader public: SliderController (Glib::RefPtr<Gdk::Pixbuf> image, Gtk::Adjustment* adj, int orientation, - boost::shared_ptr<PBD::Controllable>, bool with_numeric = true); virtual ~SliderController () {} @@ -52,6 +51,8 @@ class SliderController : public Gtkmm2ext::PixFader bool on_button_press_event (GdkEventButton *ev); + void set_controllable (boost::shared_ptr<PBD::Controllable> c) { binding_proxy.set_controllable (c); } + protected: BindingProxy binding_proxy; Glib::RefPtr<Gdk::Pixbuf> slider; @@ -59,6 +60,8 @@ class SliderController : public Gtkmm2ext::PixFader Gtk::SpinButton spin; Gtk::Frame spin_frame; Gtk::HBox spin_hbox; + + void init (); }; class VSliderController : public SliderController @@ -66,7 +69,6 @@ class VSliderController : public SliderController public: VSliderController (Glib::RefPtr<Gdk::Pixbuf> image, Gtk::Adjustment *adj, - boost::shared_ptr<PBD::Controllable>, bool with_numeric = true); }; @@ -75,7 +77,6 @@ class HSliderController : public SliderController public: HSliderController (Glib::RefPtr<Gdk::Pixbuf> image, Gtk::Adjustment *adj, - boost::shared_ptr<PBD::Controllable>, bool with_numeric = true); }; diff --git a/libs/gtkmm2ext/slider_controller.cc b/libs/gtkmm2ext/slider_controller.cc index 92fd9d078b..4eee6a6f36 100644 --- a/libs/gtkmm2ext/slider_controller.cc +++ b/libs/gtkmm2ext/slider_controller.cc @@ -30,11 +30,9 @@ using namespace PBD; SliderController::SliderController (Glib::RefPtr<Gdk::Pixbuf> image, Gtk::Adjustment *adj, int orientation, - boost::shared_ptr<Controllable> c, bool with_numeric) : PixFader (image, *adj, orientation), - binding_proxy (c), spin (*adj, 0, 2) { spin.set_name ("SliderControllerValue"); @@ -55,15 +53,15 @@ SliderController::on_button_press_event (GdkEventButton *ev) if (binding_proxy.button_press_handler (ev)) { return true; } + return PixFader::on_button_press_event (ev); } VSliderController::VSliderController (Glib::RefPtr<Gdk::Pixbuf> image, Gtk::Adjustment *adj, - boost::shared_ptr<Controllable> control, bool with_numeric) - : SliderController (image, adj, VERT, control, with_numeric) + : SliderController (image, adj, VERT, with_numeric) { if (with_numeric) { spin_frame.add (spin); @@ -76,10 +74,9 @@ VSliderController::VSliderController (Glib::RefPtr<Gdk::Pixbuf> image, HSliderController::HSliderController (Glib::RefPtr<Gdk::Pixbuf> image, Gtk::Adjustment *adj, - boost::shared_ptr<Controllable> control, bool with_numeric) - : SliderController (image, adj, HORIZ, control, with_numeric) + : SliderController (image, adj, HORIZ, with_numeric) { if (with_numeric) { spin_frame.add (spin); |