diff options
| author | 2024-12-02 10:21:14 +0000 | |
|---|---|---|
| committer | 2024-12-02 10:21:14 +0000 | |
| commit | 19eaae56d3e0c539ecdf018029c15004144b4d4e (patch) | |
| tree | d81baf173d661fca9119b12e5ce962fbf9c635e8 /libs/input/PointerController.cpp | |
| parent | ef6e3a2c780839668216bb176dd2876d4413dc74 (diff) | |
| parent | 1886eea92758e8c4d15ab4f3cdae54993d81d0d1 (diff) | |
Merge changes from topics "cd-cursor", "cd-cursor-position" into main
* changes:
Expose current viewport transform of PointerController
Check if cursor has moved out of viewport bounds in CursorController
Diffstat (limited to 'libs/input/PointerController.cpp')
| -rw-r--r-- | libs/input/PointerController.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp index 78d7d3a7051b..a713f1d1ed4d 100644 --- a/libs/input/PointerController.cpp +++ b/libs/input/PointerController.cpp @@ -138,15 +138,19 @@ std::mutex& PointerController::getLock() const { return mDisplayInfoListener->mLock; } -void PointerController::move(float deltaX, float deltaY) { +FloatPoint 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); + + const vec2 transformed = transformWithoutTranslation(transform, {deltaX, deltaY}); + + const FloatPoint unconsumedDelta = mCursorController.move(transformed.x, transformed.y); + return FloatPoint(transformWithoutTranslation(transform.inverse(), + {unconsumedDelta.x, unconsumedDelta.y})); } void PointerController::setPosition(float x, float y) { @@ -295,6 +299,11 @@ void PointerController::clearSkipScreenshotFlags() { mCursorController.setSkipScreenshot(false); } +ui::Transform PointerController::getDisplayTransform() const { + std::scoped_lock lock(getLock()); + return getTransformForDisplayLocked(mLocked.pointerDisplayId); +} + void PointerController::doInactivityTimeout() { fade(Transition::GRADUAL); } |