From 6d7a71636ae3d97914d3815bb6a0459c7873a187 Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Thu, 12 Sep 2013 00:07:59 -0700 Subject: [PATCH] Mixer: Fix issue with meter module eating ctrl+left click event. --- FL/test_press.C | 6 ++++-- mixer/src/Meter.H | 3 ++- mixer/src/Meter_Indicator_Module.C | 2 +- mixer/src/Meter_Module.C | 5 +++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/FL/test_press.C b/FL/test_press.C index 158b55c..0a79238 100644 --- a/FL/test_press.C +++ b/FL/test_press.C @@ -31,8 +31,10 @@ test_press ( unsigned long e ) if ( Fl::event_text()[0] ) ((char *)Fl::event_text())[0] = '\0'; - if ( ! ( e & FL_SHIFT ) ) - return Fl::test_shortcut( e ) && ! Fl::event_shift(); + const int mod_mask = FL_SHIFT | FL_ALT | FL_CTRL; + + if ( ( e & mod_mask ) != ( Fl::event_state() & mod_mask ) ) + return false; else return Fl::test_shortcut( e ); } diff --git a/mixer/src/Meter.H b/mixer/src/Meter.H index 180f927..ce61263 100644 --- a/mixer/src/Meter.H +++ b/mixer/src/Meter.H @@ -23,6 +23,7 @@ #include #include #include +#include "FL/test_press.H" class Meter : public Fl_Valuator { @@ -37,7 +38,7 @@ protected: { if ( m == FL_ENTER || m == FL_LEAVE ) return 1; - else if ( m == FL_PUSH && Fl::event_button1()) + else if ( m == FL_PUSH && test_press( FL_BUTTON1 )) { reset(); return 1; diff --git a/mixer/src/Meter_Indicator_Module.C b/mixer/src/Meter_Indicator_Module.C index 35b8897..df23d3b 100644 --- a/mixer/src/Meter_Indicator_Module.C +++ b/mixer/src/Meter_Indicator_Module.C @@ -197,7 +197,7 @@ Meter_Indicator_Module::handle ( int m ) if ( Fl::event_button3() && _disable_context_menu ) return 0; - if ( Fl::event_button1() ) + if ( test_press( FL_BUTTON1 ) ) { /* don't let Module::handle eat our click */ return Fl_Group::handle( m ); diff --git a/mixer/src/Meter_Module.C b/mixer/src/Meter_Module.C index 4f975f6..30876b3 100644 --- a/mixer/src/Meter_Module.C +++ b/mixer/src/Meter_Module.C @@ -150,12 +150,13 @@ Meter_Module::handle ( int m ) { case FL_PUSH: { + int r = 0; if ( test_press( FL_BUTTON1 ) ) { /* don't let Module::handle eat our click */ - return Fl_Group::handle( m ); + r = Fl_Group::handle( m ); } - return Module::handle( m ); + return Module::handle( m ) || r; } }