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

Commit 6608a80f authored by Narayan Kamath's avatar Narayan Kamath
Browse files

Revert "FloatingToolbar: Fix orientation change handling."

This reverts commit a874e309.

Change-Id: I8e61e4d1f4af8dea71f69babbe6224c01bb6c6ac
parent a874e309
Loading
Loading
Loading
Loading
+33 −45
Original line number Original line Diff line number Diff line
@@ -90,7 +90,6 @@ public final class FloatingToolbar {
            };
            };


    private final Context mContext;
    private final Context mContext;
    private final Window mWindow;
    private final FloatingToolbarPopup mPopup;
    private final FloatingToolbarPopup mPopup;


    private final Rect mContentRect = new Rect();
    private final Rect mContentRect = new Rect();
@@ -103,31 +102,26 @@ public final class FloatingToolbar {
    private int mSuggestedWidth;
    private int mSuggestedWidth;
    private boolean mWidthChanged = true;
    private boolean mWidthChanged = true;


    private final OnLayoutChangeListener mOrientationChangeHandler = new OnLayoutChangeListener() {
    private final ComponentCallbacks mOrientationChangeHandler = new ComponentCallbacks() {

        private final Rect mNewRect = new Rect();
        private final Rect mOldRect = new Rect();

        @Override
        @Override
        public void onLayoutChange(
        public void onConfigurationChanged(Configuration newConfig) {
                View view,
            if (mPopup.isShowing() && mPopup.viewPortHasChanged()) {
                int newLeft, int newRight, int newTop, int newBottom,
                int oldLeft, int oldRight, int oldTop, int oldBottom) {
            mNewRect.set(newLeft, newRight, newTop, newBottom);
            mOldRect.set(oldLeft, oldRight, oldTop, oldBottom);
            if (mPopup.isShowing() && !mNewRect.equals(mOldRect)) {
                mWidthChanged = true;
                mWidthChanged = true;
                updateLayout();
                updateLayout();
            }
            }
        }
        }

        @Override
        public void onLowMemory() {}
    };
    };


    /**
    /**
     * Initializes a floating toolbar.
     * Initializes a floating toolbar.
     */
     */
    public FloatingToolbar(Context context, Window window) {
    public FloatingToolbar(Context context, Window window) {
        mContext = applyDefaultTheme(Preconditions.checkNotNull(context));
        Preconditions.checkNotNull(context);
        mWindow = Preconditions.checkNotNull(window);
        Preconditions.checkNotNull(window);
        mContext = applyDefaultTheme(context);
        mPopup = new FloatingToolbarPopup(mContext, window.getDecorView());
        mPopup = new FloatingToolbarPopup(mContext, window.getDecorView());
    }
    }


@@ -185,8 +179,21 @@ public final class FloatingToolbar {
     * Shows this floating toolbar.
     * Shows this floating toolbar.
     */
     */
    public FloatingToolbar show() {
    public FloatingToolbar show() {
        registerOrientationHandler();
        mContext.unregisterComponentCallbacks(mOrientationChangeHandler);
        doShow();
        mContext.registerComponentCallbacks(mOrientationChangeHandler);
        List<MenuItem> menuItems = getVisibleAndEnabledMenuItems(mMenu);
        if (!isCurrentlyShowing(menuItems) || mWidthChanged) {
            mPopup.dismiss();
            mPopup.layoutMenuItems(menuItems, mMenuItemClickListener, mSuggestedWidth);
            mShowingMenuItems = getShowingMenuItemsReferences(menuItems);
        }
        if (!mPopup.isShowing()) {
            mPopup.show(mContentRect);
        } else if (!mPreviousContentRect.equals(mContentRect)) {
            mPopup.updateCoordinates(mContentRect);
        }
        mWidthChanged = false;
        mPreviousContentRect.set(mContentRect);
        return this;
        return this;
    }
    }


@@ -196,7 +203,8 @@ public final class FloatingToolbar {
     */
     */
    public FloatingToolbar updateLayout() {
    public FloatingToolbar updateLayout() {
        if (mPopup.isShowing()) {
        if (mPopup.isShowing()) {
            doShow();
            // show() performs all the logic we need here.
            show();
        }
        }
        return this;
        return this;
    }
    }
@@ -205,7 +213,7 @@ public final class FloatingToolbar {
     * Dismisses this floating toolbar.
     * Dismisses this floating toolbar.
     */
     */
    public void dismiss() {
    public void dismiss() {
        unregisterOrientationHandler();
        mContext.unregisterComponentCallbacks(mOrientationChangeHandler);
        mPopup.dismiss();
        mPopup.dismiss();
    }
    }


@@ -231,22 +239,6 @@ public final class FloatingToolbar {
        return mPopup.isHidden();
        return mPopup.isHidden();
    }
    }


    private void doShow() {
        List<MenuItem> menuItems = getVisibleAndEnabledMenuItems(mMenu);
        if (!isCurrentlyShowing(menuItems) || mWidthChanged) {
            mPopup.dismiss();
            mPopup.layoutMenuItems(menuItems, mMenuItemClickListener, mSuggestedWidth);
            mShowingMenuItems = getShowingMenuItemsReferences(menuItems);
        }
        if (!mPopup.isShowing()) {
            mPopup.show(mContentRect);
        } else if (!mPreviousContentRect.equals(mContentRect)) {
            mPopup.updateCoordinates(mContentRect);
        }
        mWidthChanged = false;
        mPreviousContentRect.set(mContentRect);
    }

    /**
    /**
     * Returns true if this floating toolbar is currently showing the specified menu items.
     * Returns true if this floating toolbar is currently showing the specified menu items.
     */
     */
@@ -286,15 +278,6 @@ public final class FloatingToolbar {
        return references;
        return references;
    }
    }


    private void registerOrientationHandler() {
        unregisterOrientationHandler()
        mWindow.getDecorView.addOnLayoutChangeListener(mOrientationChangeHandler);
    }

    private void unregisterOrientationHandler() {
        mWindow.getDecorView.removeOnLayoutChangeListener(mOrientationChangeHandler);
    }



    /**
    /**
     * A popup window used by the floating toolbar.
     * A popup window used by the floating toolbar.
@@ -1026,6 +1009,11 @@ public final class FloatingToolbar {
            mParent.getWindowVisibleDisplayFrame(mViewPortOnScreen);
            mParent.getWindowVisibleDisplayFrame(mViewPortOnScreen);
        }
        }


        private boolean viewPortHasChanged() {
            mParent.getWindowVisibleDisplayFrame(mTmpRect);
            return !mTmpRect.equals(mViewPortOnScreen);
        }

        private int getAdjustedToolbarWidth(int suggestedWidth) {
        private int getAdjustedToolbarWidth(int suggestedWidth) {
            int width = suggestedWidth;
            int width = suggestedWidth;
            refreshViewPort();
            refreshViewPort();