Browse Source

Internal refactoring.

tags/2021-05-28
jules 12 years ago
parent
commit
155859f86b
10 changed files with 74 additions and 65 deletions
  1. +5
    -0
      modules/juce_gui_basics/components/juce_Desktop.cpp
  2. +3
    -2
      modules/juce_gui_basics/components/juce_Desktop.h
  3. +45
    -41
      modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp
  4. +8
    -9
      modules/juce_gui_basics/mouse/juce_MouseInputSource.h
  5. +2
    -2
      modules/juce_gui_basics/native/juce_android_Windowing.cpp
  6. +2
    -2
      modules/juce_gui_basics/native/juce_ios_Windowing.mm
  7. +2
    -2
      modules/juce_gui_basics/native/juce_linux_Windowing.cpp
  8. +2
    -2
      modules/juce_gui_basics/native/juce_mac_Windowing.mm
  9. +2
    -2
      modules/juce_gui_basics/native/juce_win32_Windowing.cpp
  10. +3
    -3
      modules/juce_gui_basics/windows/juce_ComponentPeer.cpp

+ 5
- 0
modules/juce_gui_basics/components/juce_Desktop.cpp View File

@@ -158,6 +158,11 @@ Point<int> Desktop::getMousePosition()
return getInstance().getMainMouseSource().getScreenPosition(); return getInstance().getMainMouseSource().getScreenPosition();
} }
void Desktop::setMousePosition (Point<int> newPosition)
{
getInstance().getMainMouseSource().setScreenPosition (newPosition);
}
Point<int> Desktop::getLastMouseDownPosition() Point<int> Desktop::getLastMouseDownPosition()
{ {
return getInstance().getMainMouseSource().getLastMouseDownPosition(); return getInstance().getMainMouseSource().getLastMouseDownPosition();


+ 3
- 2
modules/juce_gui_basics/components/juce_Desktop.h View File

@@ -61,8 +61,7 @@ class JUCE_API Desktop : private DeletedAtShutdown,
{ {
public: public:
//============================================================================== //==============================================================================
/** There's only one dektop object, and this method will return it.
*/
/** There's only one desktop object, and this method will return it. */
static Desktop& JUCE_CALLTYPE getInstance(); static Desktop& JUCE_CALLTYPE getInstance();
//============================================================================== //==============================================================================
@@ -425,6 +424,8 @@ private:
ComponentAnimator animator; ComponentAnimator animator;
AffineTransform masterTransform;
void timerCallback() override; void timerCallback() override;
void resetTimer(); void resetTimer();
ListenerList <MouseListener>& getMouseListeners(); ListenerList <MouseListener>& getMouseListeners();


+ 45
- 41
modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp View File

@@ -26,8 +26,8 @@ class MouseInputSourceInternal : private AsyncUpdater
{ {
public: public:
//============================================================================== //==============================================================================
MouseInputSourceInternal (MouseInputSource& source_, const int index_, const bool isMouseDevice_)
: index (index_), isMouseDevice (isMouseDevice_), source (source_), lastPeer (nullptr),
MouseInputSourceInternal (MouseInputSource& s, const int i, const bool isMouse)
: index (i), isMouseDevice (isMouse), source (s), lastPeer (nullptr),
isUnboundedMouseModeOn (false), isCursorVisibleUntilOffscreen (false), currentCursorHandle (nullptr), isUnboundedMouseModeOn (false), isCursorVisibleUntilOffscreen (false), currentCursorHandle (nullptr),
mouseEventCounter (0), mouseMovedSignificantlySincePressed (false) mouseEventCounter (0), mouseMovedSignificantlySincePressed (false)
{ {
@@ -76,10 +76,15 @@ public:
{ {
// This needs to return the live position if possible, but it mustn't update the lastScreenPos // This needs to return the live position if possible, but it mustn't update the lastScreenPos
// value, because that can cause continuity problems. // value, because that can cause continuity problems.
return unboundedMouseOffset + (isMouseDevice ? MouseInputSource::getCurrentMousePosition()
return unboundedMouseOffset + (isMouseDevice ? MouseInputSource::getCurrentRawMousePosition()
: lastScreenPos); : lastScreenPos);
} }
void setScreenPosition (Point<int> p)
{
MouseInputSource::setRawMousePosition (p);
}
//============================================================================== //==============================================================================
#if JUCE_DUMP_MOUSE_EVENTS #if JUCE_DUMP_MOUSE_EVENTS
#define JUCE_MOUSE_EVENT_DBG(desc) DBG ("Mouse " desc << " #" << source.getIndex() \ #define JUCE_MOUSE_EVENT_DBG(desc) DBG ("Mouse " desc << " #" << source.getIndex() \
@@ -89,52 +94,52 @@ public:
#define JUCE_MOUSE_EVENT_DBG(desc) #define JUCE_MOUSE_EVENT_DBG(desc)
#endif #endif
void sendMouseEnter (Component* const comp, Point<int> screenPos, Time time)
void sendMouseEnter (Component& comp, Point<int> screenPos, Time time)
{ {
JUCE_MOUSE_EVENT_DBG ("enter") JUCE_MOUSE_EVENT_DBG ("enter")
comp->internalMouseEnter (source, comp->getLocalPoint (nullptr, screenPos), time);
comp.internalMouseEnter (source, comp.getLocalPoint (nullptr, screenPos), time);
} }
void sendMouseExit (Component* const comp, Point<int> screenPos, Time time)
void sendMouseExit (Component& comp, Point<int> screenPos, Time time)
{ {
JUCE_MOUSE_EVENT_DBG ("exit") JUCE_MOUSE_EVENT_DBG ("exit")
comp->internalMouseExit (source, comp->getLocalPoint (nullptr, screenPos), time);
comp.internalMouseExit (source, comp.getLocalPoint (nullptr, screenPos), time);
} }
void sendMouseMove (Component* const comp, Point<int> screenPos, Time time)
void sendMouseMove (Component& comp, Point<int> screenPos, Time time)
{ {
JUCE_MOUSE_EVENT_DBG ("move") JUCE_MOUSE_EVENT_DBG ("move")
comp->internalMouseMove (source, comp->getLocalPoint (nullptr, screenPos), time);
comp.internalMouseMove (source, comp.getLocalPoint (nullptr, screenPos), time);
} }
void sendMouseDown (Component* const comp, Point<int> screenPos, Time time)
void sendMouseDown (Component& comp, Point<int> screenPos, Time time)
{ {
JUCE_MOUSE_EVENT_DBG ("down") JUCE_MOUSE_EVENT_DBG ("down")
comp->internalMouseDown (source, comp->getLocalPoint (nullptr, screenPos), time);
comp.internalMouseDown (source, comp.getLocalPoint (nullptr, screenPos), time);
} }
void sendMouseDrag (Component* const comp, Point<int> screenPos, Time time)
void sendMouseDrag (Component& comp, Point<int> screenPos, Time time)
{ {
JUCE_MOUSE_EVENT_DBG ("drag") JUCE_MOUSE_EVENT_DBG ("drag")
comp->internalMouseDrag (source, comp->getLocalPoint (nullptr, screenPos), time);
comp.internalMouseDrag (source, comp.getLocalPoint (nullptr, screenPos), time);
} }
void sendMouseUp (Component* const comp, Point<int> screenPos, Time time, const ModifierKeys oldMods)
void sendMouseUp (Component& comp, Point<int> screenPos, Time time, const ModifierKeys oldMods)
{ {
JUCE_MOUSE_EVENT_DBG ("up") JUCE_MOUSE_EVENT_DBG ("up")
comp->internalMouseUp (source, comp->getLocalPoint (nullptr, screenPos), time, oldMods);
comp.internalMouseUp (source, comp.getLocalPoint (nullptr, screenPos), time, oldMods);
} }
void sendMouseWheel (Component* const comp, Point<int> screenPos, Time time, const MouseWheelDetails& wheel)
void sendMouseWheel (Component& comp, Point<int> screenPos, Time time, const MouseWheelDetails& wheel)
{ {
JUCE_MOUSE_EVENT_DBG ("wheel") JUCE_MOUSE_EVENT_DBG ("wheel")
comp->internalMouseWheel (source, comp->getLocalPoint (nullptr, screenPos), time, wheel);
comp.internalMouseWheel (source, comp.getLocalPoint (nullptr, screenPos), time, wheel);
} }
void sendMagnifyGesture (Component* const comp, Point<int> screenPos, Time time, const float amount)
void sendMagnifyGesture (Component& comp, Point<int> screenPos, Time time, const float amount)
{ {
JUCE_MOUSE_EVENT_DBG ("magnify") JUCE_MOUSE_EVENT_DBG ("magnify")
comp->internalMagnifyGesture (source, comp->getLocalPoint (nullptr, screenPos), time, amount);
comp.internalMagnifyGesture (source, comp.getLocalPoint (nullptr, screenPos), time, amount);
} }
//============================================================================== //==============================================================================
@@ -164,7 +169,7 @@ public:
const ModifierKeys oldMods (getCurrentModifiers()); const ModifierKeys oldMods (getCurrentModifiers());
buttonState = newButtonState; // must change this before calling sendMouseUp, in case it runs a modal loop buttonState = newButtonState; // must change this before calling sendMouseUp, in case it runs a modal loop
sendMouseUp (current, screenPos + unboundedMouseOffset, time, oldMods);
sendMouseUp (*current, screenPos + unboundedMouseOffset, time, oldMods);
if (lastCounter != mouseEventCounter) if (lastCounter != mouseEventCounter)
return true; // if a modal loop happened, then newButtonState is no longer valid. return true; // if a modal loop happened, then newButtonState is no longer valid.
@@ -182,7 +187,7 @@ public:
if (Component* const current = getComponentUnderMouse()) if (Component* const current = getComponentUnderMouse())
{ {
registerMouseDown (screenPos, time, *current, buttonState); registerMouseDown (screenPos, time, *current, buttonState);
sendMouseDown (current, screenPos, time);
sendMouseDown (*current, screenPos, time);
} }
} }
@@ -206,7 +211,7 @@ public:
if (safeOldComp != nullptr) if (safeOldComp != nullptr)
{ {
componentUnderMouse = safeNewComp; componentUnderMouse = safeNewComp;
sendMouseExit (safeOldComp, screenPos, time);
sendMouseExit (*safeOldComp, screenPos, time);
} }
buttonState = originalButtonState; buttonState = originalButtonState;
@@ -215,21 +220,21 @@ public:
current = componentUnderMouse = safeNewComp; current = componentUnderMouse = safeNewComp;
if (current != nullptr) if (current != nullptr)
sendMouseEnter (current, screenPos, time);
sendMouseEnter (*current, screenPos, time);
revealCursor (false); revealCursor (false);
setButtons (screenPos, time, originalButtonState); setButtons (screenPos, time, originalButtonState);
} }
} }
void setPeer (ComponentPeer* const newPeer, Point<int> screenPos, Time time)
void setPeer (ComponentPeer& newPeer, Point<int> screenPos, Time time)
{ {
ModifierKeys::updateCurrentModifiers(); ModifierKeys::updateCurrentModifiers();
if (newPeer != lastPeer)
if (&newPeer != lastPeer)
{ {
setComponentUnderMouse (nullptr, screenPos, time); setComponentUnderMouse (nullptr, screenPos, time);
lastPeer = newPeer;
lastPeer = &newPeer;
setComponentUnderMouse (findComponentAt (screenPos), screenPos, time); setComponentUnderMouse (findComponentAt (screenPos), screenPos, time);
} }
} }
@@ -249,14 +254,14 @@ public:
if (isDragging()) if (isDragging())
{ {
registerMouseDrag (newScreenPos); registerMouseDrag (newScreenPos);
sendMouseDrag (current, newScreenPos + unboundedMouseOffset, time);
sendMouseDrag (*current, newScreenPos + unboundedMouseOffset, time);
if (isUnboundedMouseModeOn) if (isUnboundedMouseModeOn)
handleUnboundedDrag (current); handleUnboundedDrag (current);
} }
else else
{ {
sendMouseMove (current, newScreenPos, time);
sendMouseMove (*current, newScreenPos, time);
} }
} }
@@ -265,12 +270,11 @@ public:
} }
//============================================================================== //==============================================================================
void handleEvent (ComponentPeer* const newPeer, Point<int> positionWithinPeer, Time time, const ModifierKeys newMods)
void handleEvent (ComponentPeer& newPeer, Point<int> positionWithinPeer, Time time, const ModifierKeys newMods)
{ {
jassert (newPeer != nullptr);
lastTime = time; lastTime = time;
++mouseEventCounter; ++mouseEventCounter;
const Point<int> screenPos (newPeer->localToGlobal (positionWithinPeer));
const Point<int> screenPos (newPeer.localToGlobal (positionWithinPeer));
if (isDragging() && newMods.isAnyMouseButtonDown()) if (isDragging() && newMods.isAnyMouseButtonDown())
{ {
@@ -292,14 +296,13 @@ public:
} }
} }
Component* getTargetForGesture (ComponentPeer* const peer, Point<int> positionWithinPeer,
Component* getTargetForGesture (ComponentPeer& peer, Point<int> positionWithinPeer,
Time time, Point<int>& screenPos) Time time, Point<int>& screenPos)
{ {
jassert (peer != nullptr);
lastTime = time; lastTime = time;
++mouseEventCounter; ++mouseEventCounter;
screenPos = peer->localToGlobal (positionWithinPeer);
screenPos = peer.localToGlobal (positionWithinPeer);
setPeer (peer, screenPos, time); setPeer (peer, screenPos, time);
setScreenPos (screenPos, time, false); setScreenPos (screenPos, time, false);
triggerFakeMove(); triggerFakeMove();
@@ -307,22 +310,22 @@ public:
return isDragging() ? nullptr : getComponentUnderMouse(); return isDragging() ? nullptr : getComponentUnderMouse();
} }
void handleWheel (ComponentPeer* const peer, Point<int> positionWithinPeer,
void handleWheel (ComponentPeer& peer, Point<int> positionWithinPeer,
Time time, const MouseWheelDetails& wheel) Time time, const MouseWheelDetails& wheel)
{ {
Desktop::getInstance().incrementMouseWheelCounter(); Desktop::getInstance().incrementMouseWheelCounter();
Point<int> screenPos; Point<int> screenPos;
if (Component* current = getTargetForGesture (peer, positionWithinPeer, time, screenPos)) if (Component* current = getTargetForGesture (peer, positionWithinPeer, time, screenPos))
sendMouseWheel (current, screenPos, time, wheel);
sendMouseWheel (*current, screenPos, time, wheel);
} }
void handleMagnifyGesture (ComponentPeer* const peer, Point<int> positionWithinPeer,
void handleMagnifyGesture (ComponentPeer& peer, Point<int> positionWithinPeer,
Time time, const float scaleFactor) Time time, const float scaleFactor)
{ {
Point<int> screenPos; Point<int> screenPos;
if (Component* current = getTargetForGesture (peer, positionWithinPeer, time, screenPos)) if (Component* current = getTargetForGesture (peer, positionWithinPeer, time, screenPos))
sendMagnifyGesture (current, screenPos, time, scaleFactor);
sendMagnifyGesture (*current, screenPos, time, scaleFactor);
} }
//============================================================================== //==============================================================================
@@ -535,20 +538,21 @@ void MouseInputSource::showMouseCursor (const MouseCursor& cursor) { pimpl-
void MouseInputSource::hideCursor() { pimpl->hideCursor(); } void MouseInputSource::hideCursor() { pimpl->hideCursor(); }
void MouseInputSource::revealCursor() { pimpl->revealCursor (false); } void MouseInputSource::revealCursor() { pimpl->revealCursor (false); }
void MouseInputSource::forceMouseCursorUpdate() { pimpl->revealCursor (true); } void MouseInputSource::forceMouseCursorUpdate() { pimpl->revealCursor (true); }
void MouseInputSource::setScreenPosition (Point<int> p) { pimpl->setScreenPosition (p); }
void MouseInputSource::handleEvent (ComponentPeer* peer, Point<int> positionWithinPeer,
void MouseInputSource::handleEvent (ComponentPeer& peer, Point<int> positionWithinPeer,
const int64 time, const ModifierKeys mods) const int64 time, const ModifierKeys mods)
{ {
pimpl->handleEvent (peer, positionWithinPeer, Time (time), mods.withOnlyMouseButtons()); pimpl->handleEvent (peer, positionWithinPeer, Time (time), mods.withOnlyMouseButtons());
} }
void MouseInputSource::handleWheel (ComponentPeer* const peer, Point<int> positionWithinPeer,
void MouseInputSource::handleWheel (ComponentPeer& peer, Point<int> positionWithinPeer,
const int64 time, const MouseWheelDetails& wheel) const int64 time, const MouseWheelDetails& wheel)
{ {
pimpl->handleWheel (peer, positionWithinPeer, Time (time), wheel); pimpl->handleWheel (peer, positionWithinPeer, Time (time), wheel);
} }
void MouseInputSource::handleMagnifyGesture (ComponentPeer* const peer, Point<int> positionWithinPeer,
void MouseInputSource::handleMagnifyGesture (ComponentPeer& peer, Point<int> positionWithinPeer,
const int64 time, const float scaleFactor) const int64 time, const float scaleFactor)
{ {
pimpl->handleMagnifyGesture (peer, positionWithinPeer, Time (time), scaleFactor); pimpl->handleMagnifyGesture (peer, positionWithinPeer, Time (time), scaleFactor);


+ 8
- 9
modules/juce_gui_basics/mouse/juce_MouseInputSource.h View File

@@ -163,22 +163,21 @@ public:
*/ */
void enableUnboundedMouseMovement (bool isEnabled, bool keepCursorVisibleUntilOffscreen = false); void enableUnboundedMouseMovement (bool isEnabled, bool keepCursorVisibleUntilOffscreen = false);
//==============================================================================
/** @internal */
void handleEvent (ComponentPeer*, Point<int>, int64 time, const ModifierKeys);
/** @internal */
void handleWheel (ComponentPeer*, Point<int>, int64 time, const MouseWheelDetails&);
/** @internal */
void handleMagnifyGesture (ComponentPeer*, Point<int>, int64 time, float scaleFactor);
/** Attempts to set this mouse pointer's screen position. */
void setScreenPosition (Point<int> newPosition);
private: private:
//============================================================================== //==============================================================================
friend class Desktop;
friend class ComponentPeer; friend class ComponentPeer;
friend class MouseInputSourceInternal; friend class MouseInputSourceInternal;
ScopedPointer<MouseInputSourceInternal> pimpl; ScopedPointer<MouseInputSourceInternal> pimpl;
static Point<int> getCurrentMousePosition();
void handleEvent (ComponentPeer&, Point<int>, int64 time, const ModifierKeys);
void handleWheel (ComponentPeer&, Point<int>, int64 time, const MouseWheelDetails&);
void handleMagnifyGesture (ComponentPeer&, Point<int>, int64 time, float scaleFactor);
static Point<int> getCurrentRawMousePosition();
static void setRawMousePosition (Point<int>);
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MouseInputSource) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MouseInputSource)
}; };


+ 2
- 2
modules/juce_gui_basics/native/juce_android_Windowing.cpp View File

@@ -584,12 +584,12 @@ bool Desktop::addMouseInputSource()
return true; return true;
} }
Point<int> MouseInputSource::getCurrentMousePosition()
Point<int> MouseInputSource::getCurrentRawMousePosition()
{ {
return AndroidComponentPeer::lastMousePos; return AndroidComponentPeer::lastMousePos;
} }
void Desktop::setMousePosition (Point<int> newPosition)
void MouseInputSource::setRawMousePosition (Point<int>)
{ {
// not needed // not needed
} }


+ 2
- 2
modules/juce_gui_basics/native/juce_ios_Windowing.mm View File

@@ -288,12 +288,12 @@ bool Desktop::canUseSemiTransparentWindows() noexcept
return true; return true;
} }
Point<int> MouseInputSource::getCurrentMousePosition()
Point<int> MouseInputSource::getCurrentRawMousePosition()
{ {
return juce_lastMousePos; return juce_lastMousePos;
} }
void Desktop::setMousePosition (Point<int>)
void MouseInputSource::setRawMousePosition (Point<int>)
{ {
} }


+ 2
- 2
modules/juce_gui_basics/native/juce_linux_Windowing.cpp View File

@@ -3104,7 +3104,7 @@ bool Desktop::canUseSemiTransparentWindows() noexcept
&& (matchedDepth == desiredDepth); && (matchedDepth == desiredDepth);
} }
Point<int> MouseInputSource::getCurrentMousePosition()
Point<int> MouseInputSource::getCurrentRawMousePosition()
{ {
Window root, child; Window root, child;
int x, y, winx, winy; int x, y, winx, winy;
@@ -3124,7 +3124,7 @@ Point<int> MouseInputSource::getCurrentMousePosition()
return Point<int> (x, y); return Point<int> (x, y);
} }
void Desktop::setMousePosition (Point<int> newPosition)
void MouseInputSource::setRawMousePosition (Point<int> newPosition)
{ {
ScopedXLock xlock; ScopedXLock xlock;
Window root = RootWindow (display, DefaultScreen (display)); Window root = RootWindow (display, DefaultScreen (display));


+ 2
- 2
modules/juce_gui_basics/native/juce_mac_Windowing.mm View File

@@ -208,7 +208,7 @@ bool Desktop::canUseSemiTransparentWindows() noexcept
return true; return true;
} }
Point<int> MouseInputSource::getCurrentMousePosition()
Point<int> MouseInputSource::getCurrentRawMousePosition()
{ {
JUCE_AUTORELEASEPOOL JUCE_AUTORELEASEPOOL
{ {
@@ -217,7 +217,7 @@ Point<int> MouseInputSource::getCurrentMousePosition()
} }
} }
void Desktop::setMousePosition (Point<int> newPosition)
void MouseInputSource::setRawMousePosition (Point<int> newPosition)
{ {
// this rubbish needs to be done around the warp call, to avoid causing a // this rubbish needs to be done around the warp call, to avoid causing a
// bizarre glitch.. // bizarre glitch..


+ 2
- 2
modules/juce_gui_basics/native/juce_win32_Windowing.cpp View File

@@ -3021,14 +3021,14 @@ bool Desktop::addMouseInputSource()
return false; return false;
} }
Point<int> MouseInputSource::getCurrentMousePosition()
Point<int> MouseInputSource::getCurrentRawMousePosition()
{ {
POINT mousePos; POINT mousePos;
GetCursorPos (&mousePos); GetCursorPos (&mousePos);
return Point<int> (mousePos.x, mousePos.y); return Point<int> (mousePos.x, mousePos.y);
} }
void Desktop::setMousePosition (Point<int> newPosition)
void MouseInputSource::setRawMousePosition (Point<int> newPosition)
{ {
SetCursorPos (newPosition.x, newPosition.y); SetCursorPos (newPosition.x, newPosition.y);
} }


+ 3
- 3
modules/juce_gui_basics/windows/juce_ComponentPeer.cpp View File

@@ -78,21 +78,21 @@ void ComponentPeer::handleMouseEvent (const int touchIndex, const Point<int> pos
const ModifierKeys newMods, const int64 time) const ModifierKeys newMods, const int64 time)
{ {
if (MouseInputSource* mouse = Desktop::getInstance().getOrCreateMouseInputSource (touchIndex)) if (MouseInputSource* mouse = Desktop::getInstance().getOrCreateMouseInputSource (touchIndex))
mouse->handleEvent (this, positionWithinPeer, time, newMods);
mouse->handleEvent (*this, positionWithinPeer, time, newMods);
} }
void ComponentPeer::handleMouseWheel (const int touchIndex, const Point<int> positionWithinPeer, void ComponentPeer::handleMouseWheel (const int touchIndex, const Point<int> positionWithinPeer,
const int64 time, const MouseWheelDetails& wheel) const int64 time, const MouseWheelDetails& wheel)
{ {
if (MouseInputSource* mouse = Desktop::getInstance().getOrCreateMouseInputSource (touchIndex)) if (MouseInputSource* mouse = Desktop::getInstance().getOrCreateMouseInputSource (touchIndex))
mouse->handleWheel (this, positionWithinPeer, time, wheel);
mouse->handleWheel (*this, positionWithinPeer, time, wheel);
} }
void ComponentPeer::handleMagnifyGesture (const int touchIndex, const Point<int> positionWithinPeer, void ComponentPeer::handleMagnifyGesture (const int touchIndex, const Point<int> positionWithinPeer,
const int64 time, const float scaleFactor) const int64 time, const float scaleFactor)
{ {
if (MouseInputSource* mouse = Desktop::getInstance().getOrCreateMouseInputSource (touchIndex)) if (MouseInputSource* mouse = Desktop::getInstance().getOrCreateMouseInputSource (touchIndex))
mouse->handleMagnifyGesture (this, positionWithinPeer, time, scaleFactor);
mouse->handleMagnifyGesture (*this, positionWithinPeer, time, scaleFactor);
} }
//============================================================================== //==============================================================================


Loading…
Cancel
Save