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
This commit is contained in:
Jorim Jaggi
2016-04-05 18:03:56 -07:00
parent 255490c33c
commit 8eb8a32f98

View File

@@ -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;
}