diff options
author | Ben Loftis <ben@harrisonconsoles.com> | 2014-08-28 10:31:57 -0500 |
---|---|---|
committer | Ben Loftis <ben@harrisonconsoles.com> | 2014-08-28 10:31:57 -0500 |
commit | 3f297f7dab524dd17ef173efe41acd0ab028b0d5 (patch) | |
tree | 3c019c527403bf6dfd2fed9e1b8fe5efcee966c2 /libs/gtkmm2ext/binding_proxy.cc | |
parent | 3cc19c2cce9ae7016232d28e0df3c9755ad1ca48 (diff) |
Fix ArdourButton event sequence.
Always give ArdourButton a chance to handle Press or Release events if you override them.
This allows ArdourButtons to do the "Pressed" animation
And it now correctly eats the event so button clicks don't select the channelstrip.
Diffstat (limited to 'libs/gtkmm2ext/binding_proxy.cc')
-rw-r--r-- | libs/gtkmm2ext/binding_proxy.cc | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/libs/gtkmm2ext/binding_proxy.cc b/libs/gtkmm2ext/binding_proxy.cc index c56ab85982..bf21c19bce 100644 --- a/libs/gtkmm2ext/binding_proxy.cc +++ b/libs/gtkmm2ext/binding_proxy.cc @@ -31,20 +31,17 @@ using namespace Gtkmm2ext; using namespace std; using namespace PBD; +guint BindingProxy::bind_button = 2; +guint BindingProxy::bind_statemask = Gdk::CONTROL_MASK; + BindingProxy::BindingProxy (boost::shared_ptr<Controllable> c) : prompter (0), - controllable (c), - bind_button (2), - bind_statemask (Gdk::CONTROL_MASK) - + controllable (c) { } BindingProxy::BindingProxy () - : prompter (0), - bind_button (2), - bind_statemask (Gdk::CONTROL_MASK) - + : prompter (0) { } @@ -69,17 +66,17 @@ BindingProxy::set_bind_button_state (guint button, guint statemask) bind_statemask = statemask; } -void -BindingProxy::get_bind_button_state (guint &button, guint &statemask) +bool +BindingProxy::is_bind_action (GdkEventButton *ev) { - button = bind_button; - statemask = bind_statemask; + return ( (ev->state & bind_statemask) && ev->button == bind_button ); } + bool BindingProxy::button_press_handler (GdkEventButton *ev) { - if (controllable && (ev->state & bind_statemask) && ev->button == bind_button) { + if ( controllable && is_bind_action(ev) ) { if (Controllable::StartLearning (controllable.get())) { string prompt = _("operate controller now"); if (prompter == 0) { |