void Desktop::sendMouseMove() { if (! mouseListeners.isEmpty()) { startTimer (20); lastFakeMouseMove = getMousePosition(); Component* const target = findComponentAt (lastFakeMouseMove); if (target != nullptr) { Component::BailOutChecker checker (target); const Point<int> pos (target->getLocalPoint (nullptr, lastFakeMouseMove)); const Time now (Time::getCurrentTime()); const MouseEvent me (getMainMouseSource(), pos, ModifierKeys::getCurrentModifiers(), target, target, now, pos, now, 0, false); if (me.mods.isAnyMouseButtonDown()) mouseListeners.callChecked (checker, &MouseListener::mouseDrag, me); else mouseListeners.callChecked (checker, &MouseListener::mouseMove, me); } } }
void setScreenPos (Point<float> newScreenPos, Time time, const bool forceUpdate) { if (! isDragging()) setComponentUnderMouse (findComponentAt (newScreenPos), newScreenPos, time); if (newScreenPos != lastScreenPos || forceUpdate) { cancelPendingUpdate(); lastScreenPos = newScreenPos; if (Component* const current = getComponentUnderMouse()) { if (isDragging()) { registerMouseDrag (newScreenPos); sendMouseDrag (*current, newScreenPos + unboundedMouseOffset, time); if (isUnboundedMouseModeOn) handleUnboundedDrag (*current); } else { sendMouseMove (*current, newScreenPos, time); } } revealCursor (false); } }
void setPeer (ComponentPeer& newPeer, Point<float> screenPos, Time time) { ModifierKeys::updateCurrentModifiers(); if (&newPeer != lastPeer) { setComponentUnderMouse (nullptr, screenPos, time); lastPeer = &newPeer; setComponentUnderMouse (findComponentAt (screenPos), screenPos, time); } }
void setPeer (ComponentPeer* const newPeer, const Point<int>& screenPos, const Time& time) { ModifierKeys::updateCurrentModifiers(); if (newPeer != lastPeer) { setComponentUnderMouse (nullptr, screenPos, time); lastPeer = newPeer; setComponentUnderMouse (findComponentAt (screenPos), screenPos, time); } }
void Desktop::sendMouseMove() { if (mouseListeners.size() > 0) { startTimer (20); int x, y; getMousePosition (x, y); lastMouseX = x; lastMouseY = y; Component* const target = findComponentAt (x, y); if (target != 0) { target->globalPositionToRelative (x, y); ComponentDeletionWatcher deletionChecker (target); const MouseEvent me (x, y, ModifierKeys::getCurrentModifiers(), target, Time::getCurrentTime(), x, y, Time::getCurrentTime(), 0, false); for (int i = mouseListeners.size(); --i >= 0;) { if (ModifierKeys::getCurrentModifiers().isAnyMouseButtonDown()) ((MouseListener*) mouseListeners[i])->mouseDrag (me); else ((MouseListener*) mouseListeners[i])->mouseMove (me); if (deletionChecker.hasBeenDeleted()) return; i = jmin (i, mouseListeners.size()); } } } }