Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e5e30c5 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Hide autofill popup if anchor removed" into oc-mr1-dev

parents 73c93f02 77150c5f
Loading
Loading
Loading
Loading
+28 −1
Original line number Original line Diff line number Diff line
@@ -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
@@ -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
+8 −3
Original line number Original line Diff line number Diff line
@@ -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);
@@ -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();
@@ -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()) {