From 61cfd71d39509a497aa17532044cb2261703b0be Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Thu, 22 Aug 2019 16:36:18 -0700 Subject: [PATCH] Ignore hidden views when computing exclusion rects Bug: 138806473 Test: atest SystemGestureExclusionRectsTest Change-Id: I43629546af641d2b6347889e3ea10bd2cbbe9070 --- core/java/android/view/GestureExclusionTracker.java | 5 +++-- core/java/android/view/View.java | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/java/android/view/GestureExclusionTracker.java b/core/java/android/view/GestureExclusionTracker.java index 6fcdd714f8276..fcc14c1967301 100644 --- a/core/java/android/view/GestureExclusionTracker.java +++ b/core/java/android/view/GestureExclusionTracker.java @@ -44,7 +44,7 @@ class GestureExclusionTracker { while (i.hasNext()) { final GestureExclusionViewInfo info = i.next(); final View v = info.getView(); - if (v == null || !v.isAttachedToWindow()) { + if (v == null || !v.isAttachedToWindow() || !v.isShown()) { mGestureExclusionViewsChanged = true; i.remove(); continue; @@ -122,7 +122,8 @@ class GestureExclusionTracker { public int update() { final View excludedView = getView(); - if (excludedView == null || !excludedView.isAttachedToWindow()) return GONE; + if (excludedView == null || !excludedView.isAttachedToWindow() + || !excludedView.isShown()) return GONE; final List localRects = excludedView.getSystemGestureExclusionRects(); final List newRects = new ArrayList<>(localRects.size()); for (Rect src : localRects) { diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 4e86e60fdd62d..9c55bb065d41d 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -14423,6 +14423,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } notifyAppearedOrDisappearedForContentCaptureIfNeeded(isVisible); + updateSystemGestureExclusionRects(); } /**