Merge "Adjust the click point when magnification is activated"

This commit is contained in:
TreeHugger Robot
2021-11-16 08:18:06 +00:00
committed by Android (Google) Code Review

View File

@@ -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;