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

Commit 99bd704f authored by Clara Bayarri's avatar Clara Bayarri Committed by Android (Google) Code Review
Browse files

Merge "Fix Floating Toolbar appearing after ActionMode was cancelled" into mnc-dev

parents 05fe90c1 0d7d4ef5
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -3376,9 +3376,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
                mFloatingActionMode.finish();
            }
            cleanupFloatingActionModeViews();
            mFloatingToolbar = new FloatingToolbar(mContext, PhoneWindow.this);
            final FloatingActionMode mode = new FloatingActionMode(
                    mContext, callback, originatingView, mFloatingToolbar);
            final FloatingActionMode mode =
                    new FloatingActionMode(mContext, callback, originatingView);
            mFloatingActionModeOriginatingView = originatingView;
            mFloatingToolbarPreDrawListener =
                new OnPreDrawListener() {
@@ -3393,6 +3392,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {

        private void setHandledFloatingActionMode(ActionMode mode) {
            mFloatingActionMode = mode;
            mFloatingToolbar = new FloatingToolbar(mContext, PhoneWindow.this);
            ((FloatingActionMode) mFloatingActionMode).setFloatingToolbar(mFloatingToolbar);
            mFloatingActionMode.invalidate();
            mFloatingToolbar.show();
            mFloatingActionModeOriginatingView.getViewTreeObserver()
+15 −9
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;

import com.android.internal.util.Preconditions;
import com.android.internal.view.menu.MenuBuilder;
import com.android.internal.widget.FloatingToolbar;

@@ -32,20 +33,28 @@ public class FloatingActionMode extends ActionMode {
    private final Context mContext;
    private final ActionMode.Callback2 mCallback;
    private final MenuBuilder mMenu;
    private final FloatingToolbar mFloatingToolbar;
    private final Rect mContentRect;
    private final Rect mContentRectOnWindow;
    private final Rect mPreviousContentRectOnWindow;
    private final int[] mViewPosition;
    private final View mOriginatingView;
    private FloatingToolbar mFloatingToolbar;

    public FloatingActionMode(
            Context context, ActionMode.Callback2 callback, View originatingView,
            FloatingToolbar floatingToolbar) {
            Context context, ActionMode.Callback2 callback, View originatingView) {
        mContext = context;
        mCallback = callback;
        mMenu = new MenuBuilder(context).setDefaultShowAsAction(
                MenuItem.SHOW_AS_ACTION_IF_ROOM);
        setType(ActionMode.TYPE_FLOATING);
        mContentRect = new Rect();
        mContentRectOnWindow = new Rect();
        mPreviousContentRectOnWindow = new Rect();
        mViewPosition = new int[2];
        mOriginatingView = originatingView;
    }

    public void setFloatingToolbar(FloatingToolbar floatingToolbar) {
        mFloatingToolbar = floatingToolbar
                .setMenu(mMenu)
                .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@@ -54,12 +63,6 @@ public class FloatingActionMode extends ActionMode {
                        return mCallback.onActionItemClicked(FloatingActionMode.this, item);
                    }
                });
        setType(ActionMode.TYPE_FLOATING);
        mContentRect = new Rect();
        mContentRectOnWindow = new Rect();
        mPreviousContentRectOnWindow = new Rect();
        mViewPosition = new int[2];
        mOriginatingView = originatingView;
    }

    @Override
@@ -79,6 +82,7 @@ public class FloatingActionMode extends ActionMode {

    @Override
    public void invalidate() {
        Preconditions.checkNotNull(mFloatingToolbar);
        mCallback.onPrepareActionMode(this, mMenu);
        mFloatingToolbar.updateLayout();
        invalidateContentRect();
@@ -86,11 +90,13 @@ public class FloatingActionMode extends ActionMode {

    @Override
    public void invalidateContentRect() {
        Preconditions.checkNotNull(mFloatingToolbar);
        mCallback.onGetContentRect(this, mOriginatingView, mContentRect);
        repositionToolbar();
    }

    public void updateViewLocationInWindow() {
        Preconditions.checkNotNull(mFloatingToolbar);
        mOriginatingView.getLocationInWindow(mViewPosition);
        repositionToolbar();
    }