summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext/binding_proxy.cc
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2014-08-28 10:31:57 -0500
committerBen Loftis <ben@harrisonconsoles.com>2014-08-28 10:31:57 -0500
commit3f297f7dab524dd17ef173efe41acd0ab028b0d5 (patch)
tree3c019c527403bf6dfd2fed9e1b8fe5efcee966c2 /libs/gtkmm2ext/binding_proxy.cc
parent3cc19c2cce9ae7016232d28e0df3c9755ad1ca48 (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.cc23
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) {