diff options
| author | 2024-11-18 14:32:47 +0000 | |
|---|---|---|
| committer | 2024-11-18 14:32:47 +0000 | |
| commit | 280d19b92ae749f11f3ac0edd168b42e42df3097 (patch) | |
| tree | 12c8edbfd6843a4e5115ab1db33811bd9bb2ef28 /libs/input/PointerController.cpp | |
| parent | 593dabb0ce9786f7ddaa161a88b4ae18e79292fc (diff) | |
| parent | 24c8ba68bdfc5a728db06e3a778b2b4f43bca4e7 (diff) | |
Merge "Check if cursor has moved out of viewport bounds in CursorController" into main
Diffstat (limited to 'libs/input/PointerController.cpp')
| -rw-r--r-- | libs/input/PointerController.cpp | 13 | 
1 files changed, 8 insertions, 5 deletions
| diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp index 78d7d3a7051b..59397dab592f 100644 --- a/libs/input/PointerController.cpp +++ b/libs/input/PointerController.cpp @@ -138,15 +138,18 @@ std::mutex& PointerController::getLock() const {      return mDisplayInfoListener->mLock;  } -void PointerController::move(float deltaX, float deltaY) { +vec2 PointerController::move(float deltaX, float deltaY) {      const ui::LogicalDisplayId displayId = mCursorController.getDisplayId(); -    vec2 transformed; +    ui::Transform transform;      {          std::scoped_lock lock(getLock()); -        const auto& transform = getTransformForDisplayLocked(displayId); -        transformed = transformWithoutTranslation(transform, {deltaX, deltaY}); +        transform = getTransformForDisplayLocked(displayId);      } -    mCursorController.move(transformed.x, transformed.y); + +    vec2 transformed = transformWithoutTranslation(transform, {deltaX, deltaY}); + +    vec2 unconsumedDelta = mCursorController.move(transformed.x, transformed.y); +    return transformWithoutTranslation(transform.inverse(), unconsumedDelta);  }  void PointerController::setPosition(float x, float y) { |