diff --git a/modules/juce_gui_basics/buttons/juce_Button.cpp b/modules/juce_gui_basics/buttons/juce_Button.cpp index 89181a3487..e33ab2677d 100644 --- a/modules/juce_gui_basics/buttons/juce_Button.cpp +++ b/modules/juce_gui_basics/buttons/juce_Button.cpp @@ -84,6 +84,7 @@ Button::Button (const String& name) connectedEdgeFlags (0), commandID(), buttonState (buttonNormal), + lastStatePainted (buttonNormal), lastToggleState (false), clickTogglesState (false), needsToRelease (false), @@ -430,6 +431,7 @@ void Button::paint (Graphics& g) } paintButton (g, isOver(), isDown()); + lastStatePainted = buttonState; } //============================================================================== @@ -457,7 +459,12 @@ void Button::mouseUp (const MouseEvent& e) updateState (isMouseOver(), false); if (wasDown && wasOver && ! triggerOnMouseDown) + { + if (lastStatePainted != buttonDown) + flashButtonState(); + internalClickCallback (e.mods); + } } void Button::mouseDrag (const MouseEvent&) diff --git a/modules/juce_gui_basics/buttons/juce_Button.h b/modules/juce_gui_basics/buttons/juce_Button.h index 8704e6c592..ef4a2e7d79 100644 --- a/modules/juce_gui_basics/buttons/juce_Button.h +++ b/modules/juce_gui_basics/buttons/juce_Button.h @@ -478,7 +478,7 @@ private: int autoRepeatDelay, autoRepeatSpeed, autoRepeatMinimumDelay; int radioGroupId, connectedEdgeFlags; CommandID commandID; - ButtonState buttonState; + ButtonState buttonState, lastStatePainted; Value isOn; bool lastToggleState;