diff --git a/extras/the jucer/src/model/jucer_JucerDocument.cpp b/extras/the jucer/src/model/jucer_JucerDocument.cpp index 062fb94561..af3d387d53 100644 --- a/extras/the jucer/src/model/jucer_JucerDocument.cpp +++ b/extras/the jucer/src/model/jucer_JucerDocument.cpp @@ -71,11 +71,11 @@ void JucerDocument::changed() void JucerDocument::timerCallback() { if ((lastFocusedComp != Component::getCurrentlyFocusedComponent() - || lastClickCounter != Desktop::getMouseButtonClickCounter()) + || lastClickCounter != Desktop::getInstance().getMouseButtonClickCounter()) && ! Component::isMouseButtonDownAnywhere()) { lastFocusedComp = Component::getCurrentlyFocusedComponent(); - lastClickCounter = Desktop::getMouseButtonClickCounter(); + lastClickCounter = Desktop::getInstance().getMouseButtonClickCounter(); getUndoManager().beginNewTransaction(); } diff --git a/modules/juce_gui_basics/components/juce_Desktop.cpp b/modules/juce_gui_basics/components/juce_Desktop.cpp index ce64231525..fbd0a8a12a 100644 --- a/modules/juce_gui_basics/components/juce_Desktop.cpp +++ b/modules/juce_gui_basics/components/juce_Desktop.cpp @@ -24,7 +24,7 @@ */ Desktop::Desktop() - : mouseClickCounter (0), + : mouseClickCounter (0), mouseWheelCounter (0), kioskModeComponent (nullptr), allowedOrientations (allOrientations) { @@ -156,15 +156,11 @@ Point Desktop::getLastMouseDownPosition() return getInstance().getMainMouseSource().getLastMouseDownPosition(); } -int Desktop::getMouseButtonClickCounter() -{ - return getInstance().mouseClickCounter; -} +int Desktop::getMouseButtonClickCounter() const noexcept { return mouseClickCounter; } +int Desktop::getMouseWheelMoveCounter() const noexcept { return mouseWheelCounter; } -void Desktop::incrementMouseClickCounter() noexcept -{ - ++mouseClickCounter; -} +void Desktop::incrementMouseClickCounter() noexcept { ++mouseClickCounter; } +void Desktop::incrementMouseWheelCounter() noexcept { ++mouseWheelCounter; } int Desktop::getNumDraggingMouseSources() const noexcept { diff --git a/modules/juce_gui_basics/components/juce_Desktop.h b/modules/juce_gui_basics/components/juce_Desktop.h index 5b5c5ee169..967807c206 100644 --- a/modules/juce_gui_basics/components/juce_Desktop.h +++ b/modules/juce_gui_basics/components/juce_Desktop.h @@ -78,7 +78,6 @@ public: static Point getMousePosition(); /** Makes the mouse pointer jump to a given location. - The co-ordinates are relative to the top-left of the main monitor. */ static void setMousePosition (const Point& newPosition); @@ -92,12 +91,17 @@ public: */ static Point getLastMouseDownPosition(); - /** Returns the number of times the mouse button has been clicked since the - app started. - + /** Returns the number of times the mouse button has been clicked since the app started. Each mouse-down event increments this number by 1. + @see getMouseWheelMoveCounter + */ + int getMouseButtonClickCounter() const noexcept; + + /** Returns the number of times the mouse wheel has been moved since the app started. + Each mouse-wheel event increments this number by 1. + @see getMouseButtonClickCounter */ - static int getMouseButtonClickCounter(); + int getMouseWheelMoveCounter() const noexcept; //============================================================================== /** This lets you prevent the screensaver from becoming active. @@ -391,8 +395,9 @@ private: Point lastFakeMouseMove; void sendMouseMove(); - int mouseClickCounter; + int mouseClickCounter, mouseWheelCounter; void incrementMouseClickCounter() noexcept; + void incrementMouseWheelCounter() noexcept; ScopedPointer dragRepeater; diff --git a/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp b/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp index 7554f83b8e..240c25f876 100644 --- a/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp +++ b/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp @@ -291,8 +291,9 @@ public: jassert (peer != nullptr); lastTime = time; ++mouseEventCounter; - const Point screenPos (peer->localToGlobal (positionWithinPeer)); + Desktop::getInstance().incrementMouseWheelCounter(); + const Point screenPos (peer->localToGlobal (positionWithinPeer)); setPeer (peer, screenPos, time); setScreenPos (screenPos, time, false); triggerFakeMove(); diff --git a/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp b/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp index 7c57e69fb1..f237b73e55 100644 --- a/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp +++ b/modules/juce_gui_basics/windows/juce_TooltipWindow.cpp @@ -28,6 +28,7 @@ TooltipWindow::TooltipWindow (Component* const parent_, : Component ("tooltip"), millisecondsBeforeTipAppears (millisecondsBeforeTipAppears_), mouseClicks (0), + mouseWheelMoves (0), lastHideTime (0), lastComponentUnderMouse (nullptr), changedCompsSinceShown (true) @@ -145,9 +146,12 @@ void TooltipWindow::timerCallback() lastComponentUnderMouse = newComp; lastTipUnderMouse = newTip; - const int clickCount = Desktop::getInstance().getMouseButtonClickCounter(); - const bool mouseWasClicked = clickCount > mouseClicks; + Desktop& desktop = Desktop::getInstance(); + const int clickCount = desktop.getMouseButtonClickCounter(); + const int wheelCount = desktop.getMouseButtonClickCounter(); + const bool mouseWasClicked = (clickCount > mouseClicks || wheelCount > mouseWheelMoves); mouseClicks = clickCount; + mouseWheelMoves = wheelCount; const Point mousePos (Desktop::getMousePosition()); const bool mouseMovedQuickly = mousePos.getDistanceFrom (lastMousePos) > 12; diff --git a/modules/juce_gui_basics/windows/juce_TooltipWindow.h b/modules/juce_gui_basics/windows/juce_TooltipWindow.h index d7764dddc3..393b41caa8 100644 --- a/modules/juce_gui_basics/windows/juce_TooltipWindow.h +++ b/modules/juce_gui_basics/windows/juce_TooltipWindow.h @@ -98,7 +98,7 @@ private: //============================================================================== int millisecondsBeforeTipAppears; Point lastMousePos; - int mouseClicks; + int mouseClicks, mouseWheelMoves; unsigned int lastCompChangeTime, lastHideTime; Component* lastComponentUnderMouse; bool changedCompsSinceShown; diff --git a/modules/juce_gui_extra/misc/juce_SplashScreen.cpp b/modules/juce_gui_extra/misc/juce_SplashScreen.cpp index 31f48338a5..3ae7dfa7a8 100644 --- a/modules/juce_gui_extra/misc/juce_SplashScreen.cpp +++ b/modules/juce_gui_extra/misc/juce_SplashScreen.cpp @@ -78,7 +78,7 @@ void SplashScreen::show (const String& title, repaint(); originalClickCounter = removeOnMouseClick - ? Desktop::getMouseButtonClickCounter() + ? Desktop::getInstance().getMouseButtonClickCounter() : std::numeric_limits::max(); earliestTimeToDelete = Time::getCurrentTime() + RelativeTime::milliseconds (minimumTimeToDisplayFor); @@ -99,7 +99,7 @@ void SplashScreen::paint (Graphics& g) void SplashScreen::timerCallback() { if (Time::getCurrentTime() > earliestTimeToDelete - || Desktop::getMouseButtonClickCounter() > originalClickCounter) + || Desktop::getInstance().getMouseButtonClickCounter() != originalClickCounter) { delete this; }