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

This commit is contained in:
Clara Bayarri
2015-05-13 15:46:57 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 12 deletions

View File

@@ -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()

View File

@@ -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();
}