Loading core/java/android/view/autofill/AutofillPopupWindow.java +28 −1 Original line number Original line Diff line number Diff line Loading @@ -47,6 +47,19 @@ public class AutofillPopupWindow extends PopupWindow { private final WindowPresenter mWindowPresenter; private final WindowPresenter mWindowPresenter; private WindowManager.LayoutParams mWindowLayoutParams; private WindowManager.LayoutParams mWindowLayoutParams; private final View.OnAttachStateChangeListener mOnAttachStateChangeListener = new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View v) { /* ignore - handled by the super class */ } @Override public void onViewDetachedFromWindow(View v) { dismiss(); } }; /** /** * Creates a popup window with a presenter owning the window and responsible for * Creates a popup window with a presenter owning the window and responsible for * showing/hiding/updating the backing window. This can be useful of the window is * showing/hiding/updating the backing window. This can be useful of the window is Loading Loading @@ -208,7 +221,21 @@ public class AutofillPopupWindow extends PopupWindow { p.packageName = anchor.getContext().getPackageName(); p.packageName = anchor.getContext().getPackageName(); mWindowPresenter.show(p, getTransitionEpicenter(), isLayoutInsetDecor(), mWindowPresenter.show(p, getTransitionEpicenter(), isLayoutInsetDecor(), anchor.getLayoutDirection()); anchor.getLayoutDirection()); return; } @Override protected void attachToAnchor(View anchor, int xoff, int yoff, int gravity) { super.attachToAnchor(anchor, xoff, yoff, gravity); anchor.addOnAttachStateChangeListener(mOnAttachStateChangeListener); } @Override protected void detachFromAnchor() { final View anchor = getAnchor(); if (anchor != null) { anchor.removeOnAttachStateChangeListener(mOnAttachStateChangeListener); } super.detachFromAnchor(); } } @Override @Override Loading core/java/android/widget/PopupWindow.java +8 −3 Original line number Original line Diff line number Diff line Loading @@ -2296,8 +2296,8 @@ public class PopupWindow { } } /** @hide */ /** @hide */ protected final void detachFromAnchor() { protected void detachFromAnchor() { final View anchor = mAnchor != null ? mAnchor.get() : null; final View anchor = getAnchor(); if (anchor != null) { if (anchor != null) { final ViewTreeObserver vto = anchor.getViewTreeObserver(); final ViewTreeObserver vto = anchor.getViewTreeObserver(); vto.removeOnScrollChangedListener(mOnScrollChangedListener); vto.removeOnScrollChangedListener(mOnScrollChangedListener); Loading @@ -2316,7 +2316,7 @@ public class PopupWindow { } } /** @hide */ /** @hide */ protected final void attachToAnchor(View anchor, int xoff, int yoff, int gravity) { protected void attachToAnchor(View anchor, int xoff, int yoff, int gravity) { detachFromAnchor(); detachFromAnchor(); final ViewTreeObserver vto = anchor.getViewTreeObserver(); final ViewTreeObserver vto = anchor.getViewTreeObserver(); Loading @@ -2339,6 +2339,11 @@ public class PopupWindow { mAnchoredGravity = gravity; mAnchoredGravity = gravity; } } /** @hide */ protected @Nullable View getAnchor() { return mAnchor != null ? mAnchor.get() : null; } private void alignToAnchor() { private void alignToAnchor() { final View anchor = mAnchor != null ? mAnchor.get() : null; final View anchor = mAnchor != null ? mAnchor.get() : null; if (anchor != null && anchor.isAttachedToWindow() && hasDecorView()) { if (anchor != null && anchor.isAttachedToWindow() && hasDecorView()) { Loading Loading
core/java/android/view/autofill/AutofillPopupWindow.java +28 −1 Original line number Original line Diff line number Diff line Loading @@ -47,6 +47,19 @@ public class AutofillPopupWindow extends PopupWindow { private final WindowPresenter mWindowPresenter; private final WindowPresenter mWindowPresenter; private WindowManager.LayoutParams mWindowLayoutParams; private WindowManager.LayoutParams mWindowLayoutParams; private final View.OnAttachStateChangeListener mOnAttachStateChangeListener = new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View v) { /* ignore - handled by the super class */ } @Override public void onViewDetachedFromWindow(View v) { dismiss(); } }; /** /** * Creates a popup window with a presenter owning the window and responsible for * Creates a popup window with a presenter owning the window and responsible for * showing/hiding/updating the backing window. This can be useful of the window is * showing/hiding/updating the backing window. This can be useful of the window is Loading Loading @@ -208,7 +221,21 @@ public class AutofillPopupWindow extends PopupWindow { p.packageName = anchor.getContext().getPackageName(); p.packageName = anchor.getContext().getPackageName(); mWindowPresenter.show(p, getTransitionEpicenter(), isLayoutInsetDecor(), mWindowPresenter.show(p, getTransitionEpicenter(), isLayoutInsetDecor(), anchor.getLayoutDirection()); anchor.getLayoutDirection()); return; } @Override protected void attachToAnchor(View anchor, int xoff, int yoff, int gravity) { super.attachToAnchor(anchor, xoff, yoff, gravity); anchor.addOnAttachStateChangeListener(mOnAttachStateChangeListener); } @Override protected void detachFromAnchor() { final View anchor = getAnchor(); if (anchor != null) { anchor.removeOnAttachStateChangeListener(mOnAttachStateChangeListener); } super.detachFromAnchor(); } } @Override @Override Loading
core/java/android/widget/PopupWindow.java +8 −3 Original line number Original line Diff line number Diff line Loading @@ -2296,8 +2296,8 @@ public class PopupWindow { } } /** @hide */ /** @hide */ protected final void detachFromAnchor() { protected void detachFromAnchor() { final View anchor = mAnchor != null ? mAnchor.get() : null; final View anchor = getAnchor(); if (anchor != null) { if (anchor != null) { final ViewTreeObserver vto = anchor.getViewTreeObserver(); final ViewTreeObserver vto = anchor.getViewTreeObserver(); vto.removeOnScrollChangedListener(mOnScrollChangedListener); vto.removeOnScrollChangedListener(mOnScrollChangedListener); Loading @@ -2316,7 +2316,7 @@ public class PopupWindow { } } /** @hide */ /** @hide */ protected final void attachToAnchor(View anchor, int xoff, int yoff, int gravity) { protected void attachToAnchor(View anchor, int xoff, int yoff, int gravity) { detachFromAnchor(); detachFromAnchor(); final ViewTreeObserver vto = anchor.getViewTreeObserver(); final ViewTreeObserver vto = anchor.getViewTreeObserver(); Loading @@ -2339,6 +2339,11 @@ public class PopupWindow { mAnchoredGravity = gravity; mAnchoredGravity = gravity; } } /** @hide */ protected @Nullable View getAnchor() { return mAnchor != null ? mAnchor.get() : null; } private void alignToAnchor() { private void alignToAnchor() { final View anchor = mAnchor != null ? mAnchor.get() : null; final View anchor = mAnchor != null ? mAnchor.get() : null; if (anchor != null && anchor.isAttachedToWindow() && hasDecorView()) { if (anchor != null && anchor.isAttachedToWindow() && hasDecorView()) { Loading