Merge "Ignore accessibility overlays during visible window computation" into lmp-mr1-dev

This commit is contained in:
Alan Viverette
2014-11-14 01:52:14 +00:00
committed by Android (Google) Code Review

View File

@@ -984,12 +984,7 @@ final class AccessibilityController {
final int visibleWindowCount = visibleWindows.size();
for (int i = visibleWindowCount - 1; i >= 0; i--) {
WindowState windowState = visibleWindows.valueAt(i);
// Compute the bounds in the screen.
Rect boundsInScreen = mTempRect;
computeWindowBoundsInScreen(windowState, boundsInScreen);
final WindowState windowState = visibleWindows.valueAt(i);
final int flags = windowState.mAttrs.flags;
// If the window is not touchable - ignore.
@@ -997,6 +992,16 @@ final class AccessibilityController {
continue;
}
// If the window is an accessibility overlay - ignore.
if (windowState.mAttrs.type ==
WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY) {
continue;
}
// Compute the bounds in the screen.
final Rect boundsInScreen = mTempRect;
computeWindowBoundsInScreen(windowState, boundsInScreen);
// If the window is completely covered by other windows - ignore.
if (unaccountedSpace.quickReject(boundsInScreen)) {
continue;
@@ -1013,14 +1018,8 @@ final class AccessibilityController {
}
}
// Account for the space this window takes if the window
// is not an accessibility overlay which does not change
// the reported windows.
if (windowState.mAttrs.type == WindowManager.LayoutParams
.TYPE_ACCESSIBILITY_OVERLAY) {
unaccountedSpace.op(boundsInScreen, unaccountedSpace,
Region.Op.REVERSE_DIFFERENCE);
}
unaccountedSpace.op(boundsInScreen, unaccountedSpace,
Region.Op.REVERSE_DIFFERENCE);
// We figured out what is touchable for the entire screen - done.
if (unaccountedSpace.isEmpty()) {