Merge "Adjust the click point when magnification is activated"
This commit is contained in:
committed by
Android (Google) Code Review
commit
dacf7193e3
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user