summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java25
1 files changed, 15 insertions, 10 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 0e3932799123..a11e2641e5c9 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -3576,31 +3576,36 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
}
synchronized (mLock) {
- Rect boundsInScreen = mTempRect;
- focus.getBoundsInScreen(boundsInScreen);
+ Rect boundsInScreenBeforeMagnification = mTempRect;
- // Apply magnification if needed.
+ focus.getBoundsInScreen(boundsInScreenBeforeMagnification);
+ final Point nodeCenter = new Point(boundsInScreenBeforeMagnification.centerX(),
+ boundsInScreenBeforeMagnification.centerY());
+
+ // Invert magnification if needed.
MagnificationSpec spec = getCompatibleMagnificationSpecLocked(focus.getWindowId());
if (spec != null && !spec.isNop()) {
- boundsInScreen.offset((int) -spec.offsetX, (int) -spec.offsetY);
- boundsInScreen.scale(1 / spec.scale);
+ boundsInScreenBeforeMagnification.offset((int) -spec.offsetX,
+ (int) -spec.offsetY);
+ boundsInScreenBeforeMagnification.scale(1 / spec.scale);
}
- // Clip to the window bounds.
+ //Clip to the window bounds.
Rect windowBounds = mTempRect1;
getWindowBounds(focus.getWindowId(), windowBounds);
- if (!boundsInScreen.intersect(windowBounds)) {
+ if (!boundsInScreenBeforeMagnification.intersect(windowBounds)) {
return false;
}
- // Clip to the screen bounds.
+ //Clip to the screen bounds.
Point screenSize = mTempPoint;
mDefaultDisplay.getRealSize(screenSize);
- if (!boundsInScreen.intersect(0, 0, screenSize.x, screenSize.y)) {
+ if (!boundsInScreenBeforeMagnification.intersect(0, 0, screenSize.x,
+ screenSize.y)) {
return false;
}
- outPoint.set(boundsInScreen.centerX(), boundsInScreen.centerY());
+ outPoint.set(nodeCenter.x, nodeCenter.y);
}
return true;