summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-12-08 16:07:28 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-12-08 16:07:28 +0000
commit3be16e8afbd891c0bfe7227158384ed0d127597f (patch)
tree73a8f761fc13cbd0613d3923a34748bb9aa761d2 /libs/gtkmm2ext
parenta9bb336fc44ab4937978f5a0308e440ed632ea50 (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.cc21
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/barcontroller.h2
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/bindable_button.h14
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/binding_proxy.h2
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/slider_controller.h7
-rw-r--r--libs/gtkmm2ext/slider_controller.cc9
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);