Merge "Fix regression in updating gesture exclusion rects" into qt-qpr1-dev

This commit is contained in:
TreeHugger Robot
2019-09-04 07:17:54 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 4 deletions

View File

@@ -44,7 +44,7 @@ class GestureExclusionTracker {
while (i.hasNext()) {
final GestureExclusionViewInfo info = i.next();
final View v = info.getView();
if (v == null || !v.isAttachedToWindow() || !v.isShown()) {
if (v == null || !v.isAttachedToWindow() || !v.isAggregatedVisible()) {
mGestureExclusionViewsChanged = true;
i.remove();
continue;
@@ -123,7 +123,7 @@ class GestureExclusionTracker {
public int update() {
final View excludedView = getView();
if (excludedView == null || !excludedView.isAttachedToWindow()
|| !excludedView.isShown()) return GONE;
|| !excludedView.isAggregatedVisible()) return GONE;
final List<Rect> localRects = excludedView.getSystemGestureExclusionRects();
final List<Rect> newRects = new ArrayList<>(localRects.size());
for (Rect src : localRects) {

View File

@@ -14343,6 +14343,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
}
/**
* @return true if this view and all ancestors are visible as of the last
* {@link #onVisibilityAggregated(boolean)} call.
*/
boolean isAggregatedVisible() {
return (mPrivateFlags3 & PFLAG3_AGGREGATED_VISIBLE) != 0;
}
/**
* Internal dispatching method for {@link #onVisibilityAggregated}. Overridden by
* ViewGroup. Intended to only be called when {@link #isAttachedToWindow()},
@@ -14371,7 +14379,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
@CallSuper
public void onVisibilityAggregated(boolean isVisible) {
// Update our internal visibility tracking so we can detect changes
boolean oldVisible = (mPrivateFlags3 & PFLAG3_AGGREGATED_VISIBLE) != 0;
boolean oldVisible = isAggregatedVisible();
mPrivateFlags3 = isVisible ? (mPrivateFlags3 | PFLAG3_AGGREGATED_VISIBLE)
: (mPrivateFlags3 & ~PFLAG3_AGGREGATED_VISIBLE);
if (isVisible && mAttachInfo != null) {
@@ -14423,7 +14431,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
notifyAppearedOrDisappearedForContentCaptureIfNeeded(isVisible);
updateSystemGestureExclusionRects();
if (isVisible != oldVisible) {
updateSystemGestureExclusionRects();
}
}
/**