From 8eb8a32f98915bc5fc009130d79d00021ef7a7c9 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Tue, 5 Apr 2016 18:03:56 -0700 Subject: [PATCH] Fix divider touchable region Make sure to update the touchable region whenever the layout changes. The layout is wrong if the window is invisible during the first layout. Bug: 27854148 Change-Id: Ic0501eccf7b919d10491c6f5aa0c0f1765a07c52 --- .../android/systemui/stackdivider/DividerView.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index 601d910b065f..3005535535cc 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -240,16 +240,6 @@ public class DividerView extends FrameLayout implements OnTouchListener, protected void onAttachedToWindow() { super.onAttachedToWindow(); EventBus.getDefault().register(this); - getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { - - @Override - public void onGlobalLayout() { - getViewTreeObserver().removeOnGlobalLayoutListener(this); - mWindowManagerProxy.setTouchRegion(new Rect(mHandle.getLeft(), mHandle.getTop(), - mHandle.getLeft() + mHandle.getWidth(), - mHandle.getTop() + mHandle.getHeight())); - } - }); } @Override @@ -274,6 +264,15 @@ public class DividerView extends FrameLayout implements OnTouchListener, return super.onApplyWindowInsets(insets); } + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + if (changed) { + mWindowManagerProxy.setTouchRegion(new Rect(mHandle.getLeft(), mHandle.getTop(), + mHandle.getRight(), mHandle.getBottom())); + } + } + public void setWindowManager(DividerWindowManager windowManager) { mWindowManager = windowManager; } -- 2.11.0