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

Commit 0cf64891 authored by Abodunrinwa Toki's avatar Abodunrinwa Toki
Browse files

FloatingToolbar: Hide panels when they're invisible.

This patch sets the visibility of a panel to INVISIBLE when it's
alpha is 0. This will ensure that a user cannot interact with a
view that cannot be seen. Not doing this resulted in a bug where
the user will tap on an area of the toolbar and activate an
unintended action.

It also removes the redundant mResetOverflowButtonDrawable. It's
actions are already performed in setPanelsStatesAtRestingPosition.

Bug: 27693433
Change-Id: Iafcde23622c7d1604924c520f6748fdbb8b135e7
parent d3eb078a
Loading
Loading
Loading
Loading
+8 −17
Original line number Diff line number Diff line
@@ -308,9 +308,6 @@ public final class FloatingToolbar {
        private static final int MIN_OVERFLOW_SIZE = 2;
        private static final int MAX_OVERFLOW_SIZE = 4;

        /* The duration of the overflow button vector animation duration. */
        private static final int OVERFLOW_BUTTON_ANIMATION_DELAY = 400;

        private final Context mContext;
        private final View mParent;  // Parent for the popup window.
        private final PopupWindow mPopupWindow;
@@ -377,18 +374,6 @@ public final class FloatingToolbar {
            }
        };

        /* Runnable to reset the overflow button's drawable after an overflow transition. */
        private final Runnable mResetOverflowButtonDrawable = new Runnable() {
            @Override
            public void run() {
                if (mIsOverflowOpen) {
                    mOverflowButton.setImageDrawable(mArrow);
                } else {
                    mOverflowButton.setImageDrawable(mOverflow);
                }
            }
        };

        private boolean mDismissed = true; // tracks whether this popup is dismissed or dismissing.
        private boolean mHidden; // tracks whether this popup is hidden or hiding.

@@ -902,7 +887,9 @@ public final class FloatingToolbar {
                final Size containerSize = mOverflowPanelSize;
                setSize(mContentContainer, containerSize);
                mMainPanel.setAlpha(0);
                mMainPanel.setVisibility(View.INVISIBLE);
                mOverflowPanel.setAlpha(1);
                mOverflowPanel.setVisibility(View.VISIBLE);
                mOverflowButton.setImageDrawable(mArrow);

                // Update x-coordinates depending on RTL state.
@@ -941,7 +928,9 @@ public final class FloatingToolbar {
                final Size containerSize = mMainPanelSize;
                setSize(mContentContainer, containerSize);
                mMainPanel.setAlpha(1);
                mMainPanel.setVisibility(View.VISIBLE);
                mOverflowPanel.setAlpha(0);
                mOverflowPanel.setVisibility(View.INVISIBLE);
                mOverflowButton.setImageDrawable(mOverflow);

                if (hasOverflow()) {
@@ -1327,8 +1316,6 @@ public final class FloatingToolbar {
                        mToArrow.start();
                        openOverflow();
                    }
                    overflowButton.postDelayed(
                            mResetOverflowButtonDrawable, OVERFLOW_BUTTON_ANIMATION_DELAY);
                }
            });
            return overflowButton;
@@ -1389,6 +1376,10 @@ public final class FloatingToolbar {
                    // Disable the overflow button while it's animating.
                    // It will be re-enabled when the animation stops.
                    mOverflowButton.setEnabled(false);
                    // Ensure both panels have visibility turned on when the overflow animation
                    // starts.
                    mMainPanel.setVisibility(View.VISIBLE);
                    mOverflowPanel.setVisibility(View.VISIBLE);
                }

                @Override