summaryrefslogtreecommitdiff
path: root/libs/input/PointerController.cpp
diff options
context:
space:
mode:
author Arpit Singh <arpitks@google.com> 2024-11-18 14:32:47 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-11-18 14:32:47 +0000
commit280d19b92ae749f11f3ac0edd168b42e42df3097 (patch)
tree12c8edbfd6843a4e5115ab1db33811bd9bb2ef28 /libs/input/PointerController.cpp
parent593dabb0ce9786f7ddaa161a88b4ae18e79292fc (diff)
parent24c8ba68bdfc5a728db06e3a778b2b4f43bca4e7 (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.cpp13
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) {