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

Commit 5fd8dd01 authored by Adam Powell's avatar Adam Powell Committed by Android (Google) Code Review
Browse files

Merge "Fix some bugs with MenuPopupHelper and ListPopupWindow"

parents 1e7131ea ca51e878
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -604,6 +604,7 @@ public class ListPopupWindow {
        removePromptView();
        mPopup.setContentView(null);
        mDropDownList = null;
        mHandler.removeCallbacks(mResizePopupRunnable);
    }

    /**
+14 −8
Original line number Diff line number Diff line
@@ -101,8 +101,10 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On
        }

        if (anchor != null) {
            if (mTreeObserver == null) {
                mTreeObserver = anchor.getViewTreeObserver();
                mTreeObserver.addOnGlobalLayoutListener(this);
            }
            mPopup.setAnchorView(anchor);
        } else {
            return false;
@@ -123,10 +125,10 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On

    public void onDismiss() {
        mPopup = null;
        if (mTreeObserver != null) {
            mTreeObserver.removeGlobalOnLayoutListener(MenuPopupHelper.this);
            mTreeObserver = null;
        if (mTreeObserver != null && mTreeObserver.isAlive()) {
            mTreeObserver.removeGlobalOnLayoutListener(this);
        }
        mTreeObserver = null;
    }

    public boolean isShowing() {
@@ -134,6 +136,8 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On
    }

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (!isShowing()) return;

        MenuItem item = null;
        if (mOverflowOnly) {
            item = mMenu.getOverflowItem(position);
@@ -184,13 +188,15 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On
    @Override
    public void onGlobalLayout() {
        if (!isShowing()) {
            if (mTreeObserver.isAlive()) {
                mTreeObserver.removeGlobalOnLayoutListener(this);
            }
            mTreeObserver = null;
        } else {
            final View anchor = mAnchorView != null ? mAnchorView.get() : null;
            if (anchor != null && !anchor.isShown()) {
            if (anchor == null || !anchor.isShown()) {
                dismiss();
            } else {
            } else if (isShowing()) {
                // Recompute window size and position
                mPopup.show();
            }