From be5f2d62c455e5705742f2107bdadf3cd092bb8d Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 2 Jan 2018 17:34:31 +0000 Subject: [PATCH] Added some helper objects Button::onClick and Button::onStateChange, which let you easily assign a lambda to be called on these events --- .../juce_gui_basics/buttons/juce_Button.cpp | 22 +++++++++++++++---- modules/juce_gui_basics/buttons/juce_Button.h | 17 ++++++++------ 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/modules/juce_gui_basics/buttons/juce_Button.cpp b/modules/juce_gui_basics/buttons/juce_Button.cpp index 9bd1baaff0..29502687f8 100644 --- a/modules/juce_gui_basics/buttons/juce_Button.cpp +++ b/modules/juce_gui_basics/buttons/juce_Button.cpp @@ -391,8 +391,15 @@ void Button::sendClickMessage (const ModifierKeys& modifiers) clicked (modifiers); - if (! checker.shouldBailOut()) - buttonListeners.callChecked (checker, [this] (Listener& l) { l.buttonClicked (this); }); + if (checker.shouldBailOut()) + return; + + buttonListeners.callChecked (checker, [this] (Listener& l) { l.buttonClicked (this); }); + + if (checker.shouldBailOut()) + return; + + onClick.invoke (*this); } void Button::sendStateMessage() @@ -401,8 +408,15 @@ void Button::sendStateMessage() buttonStateChanged(); - if (! checker.shouldBailOut()) - buttonListeners.callChecked (checker, [this] (Listener& l) { l.buttonStateChanged (this); }); + if (checker.shouldBailOut()) + return; + + buttonListeners.callChecked (checker, [this] (Listener& l) { l.buttonStateChanged (this); }); + + if (checker.shouldBailOut()) + return; + + onStateChange.invoke (*this); } //============================================================================== diff --git a/modules/juce_gui_basics/buttons/juce_Button.h b/modules/juce_gui_basics/buttons/juce_Button.h index 72442a754f..dcecb2b316 100644 --- a/modules/juce_gui_basics/buttons/juce_Button.h +++ b/modules/juce_gui_basics/buttons/juce_Button.h @@ -184,6 +184,12 @@ public: */ void removeListener (Listener* listener); + /** You can assign a lambda to this callback object to have it called when the button is clicked. */ + EventHandler