From 3d8acd864a341f07c2992ae3c66e1c5f748d8ad0 Mon Sep 17 00:00:00 2001 From: ed Date: Fri, 22 Mar 2019 09:59:08 +0000 Subject: [PATCH] Fixed some pen input source issues --- modules/juce_gui_basics/buttons/juce_Button.cpp | 8 ++++---- modules/juce_gui_basics/buttons/juce_Button.h | 2 +- modules/juce_gui_basics/components/juce_Component.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/juce_gui_basics/buttons/juce_Button.cpp b/modules/juce_gui_basics/buttons/juce_Button.cpp index 1e44876f56..0cd942d021 100644 --- a/modules/juce_gui_basics/buttons/juce_Button.cpp +++ b/modules/juce_gui_basics/buttons/juce_Button.cpp @@ -461,7 +461,7 @@ void Button::mouseUp (const MouseEvent& e) { const bool wasDown = isDown(); const bool wasOver = isOver(); - updateState (isMouseOrTouchOver (e), false); + updateState (isMouseSourceOver (e), false); if (wasDown && wasOver && ! triggerOnMouseDown) { @@ -475,15 +475,15 @@ void Button::mouseUp (const MouseEvent& e) void Button::mouseDrag (const MouseEvent& e) { auto oldState = buttonState; - updateState (isMouseOrTouchOver (e), true); + updateState (isMouseSourceOver (e), true); if (autoRepeatDelay >= 0 && buttonState != oldState && isDown()) callbackHelper->startTimer (autoRepeatSpeed); } -bool Button::isMouseOrTouchOver (const MouseEvent& e) +bool Button::isMouseSourceOver (const MouseEvent& e) { - if (e.source.isTouch()) + if (e.source.isTouch() || e.source.isPen()) return getLocalBounds().toFloat().contains (e.position); return isMouseOver(); diff --git a/modules/juce_gui_basics/buttons/juce_Button.h b/modules/juce_gui_basics/buttons/juce_Button.h index 263c4c1322..4495ca99a3 100644 --- a/modules/juce_gui_basics/buttons/juce_Button.h +++ b/modules/juce_gui_basics/buttons/juce_Button.h @@ -519,7 +519,7 @@ private: void sendStateMessage(); void setToggleState (bool shouldBeOn, NotificationType click, NotificationType state); - bool isMouseOrTouchOver (const MouseEvent& e); + bool isMouseSourceOver (const MouseEvent& e); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Button) }; diff --git a/modules/juce_gui_basics/components/juce_Component.cpp b/modules/juce_gui_basics/components/juce_Component.cpp index a8d52d9cc9..0b537d5a28 100644 --- a/modules/juce_gui_basics/components/juce_Component.cpp +++ b/modules/juce_gui_basics/components/juce_Component.cpp @@ -2902,7 +2902,7 @@ bool Component::isMouseOver (bool includeChildren) const auto* c = ms.getComponentUnderMouse(); if (c == this || (includeChildren && isParentOf (c))) - if (ms.isDragging() || ! ms.isTouch()) + if (ms.isDragging() || ! (ms.isTouch() || ms.isPen())) if (c->reallyContains (c->getLocalPoint (nullptr, ms.getScreenPosition()).roundToInt(), false)) return true; }