Loading core/java/com/android/internal/policy/DecorView.java +2 −3 Original line number Diff line number Diff line Loading @@ -1759,8 +1759,9 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind mFloatingActionMode.finish(); } cleanupFloatingActionModeViews(); mFloatingToolbar = new FloatingToolbar(mContext, mWindow); final FloatingActionMode mode = new FloatingActionMode(mContext, callback, originatingView); new FloatingActionMode(mContext, callback, originatingView, mFloatingToolbar); mFloatingActionModeOriginatingView = originatingView; mFloatingToolbarPreDrawListener = new ViewTreeObserver.OnPreDrawListener() { Loading @@ -1775,8 +1776,6 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind private void setHandledFloatingActionMode(ActionMode mode) { mFloatingActionMode = mode; mFloatingToolbar = new FloatingToolbar(mContext, mWindow); ((FloatingActionMode) mFloatingActionMode).setFloatingToolbar(mFloatingToolbar); mFloatingActionMode.invalidate(); // Will show the floating toolbar if necessary. mFloatingActionModeOriginatingView.getViewTreeObserver() .addOnPreDrawListener(mFloatingToolbarPreDrawListener); Loading core/java/com/android/internal/view/FloatingActionMode.java +23 −43 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.view; import android.annotation.NonNull; import android.content.Context; import android.graphics.Point; import android.graphics.Rect; Loading @@ -36,26 +37,26 @@ import com.android.internal.widget.FloatingToolbar; import java.util.Arrays; public class FloatingActionMode extends ActionMode { public final class FloatingActionMode extends ActionMode { private static final int MAX_HIDE_DURATION = 3000; private static final int MOVING_HIDE_DELAY = 50; private final Context mContext; private final ActionMode.Callback2 mCallback; private final MenuBuilder mMenu; private final Rect mContentRect; private final Rect mContentRectOnScreen; private final Rect mPreviousContentRectOnScreen; private final int[] mViewPositionOnScreen; private final int[] mPreviousViewPositionOnScreen; private final int[] mRootViewPositionOnScreen; private final Rect mViewRectOnScreen; private final Rect mPreviousViewRectOnScreen; private final Rect mScreenRect; private final View mOriginatingView; @NonNull private final Context mContext; @NonNull private final ActionMode.Callback2 mCallback; @NonNull private final MenuBuilder mMenu; @NonNull private final Rect mContentRect; @NonNull private final Rect mContentRectOnScreen; @NonNull private final Rect mPreviousContentRectOnScreen; @NonNull private final int[] mViewPositionOnScreen; @NonNull private final int[] mPreviousViewPositionOnScreen; @NonNull private final int[] mRootViewPositionOnScreen; @NonNull private final Rect mViewRectOnScreen; @NonNull private final Rect mPreviousViewRectOnScreen; @NonNull private final Rect mScreenRect; @NonNull private final View mOriginatingView; @NonNull private final Point mDisplaySize; private final int mBottomAllowance; private final Point mDisplaySize; private final Runnable mMovingOff = new Runnable() { public void run() { Loading @@ -75,11 +76,12 @@ public class FloatingActionMode extends ActionMode { } }; private FloatingToolbar mFloatingToolbar; private FloatingToolbarVisibilityHelper mFloatingToolbarVisibilityHelper; @NonNull private FloatingToolbar mFloatingToolbar; @NonNull private FloatingToolbarVisibilityHelper mFloatingToolbarVisibilityHelper; public FloatingActionMode( Context context, ActionMode.Callback2 callback, View originatingView) { Context context, ActionMode.Callback2 callback, View originatingView, FloatingToolbar floatingToolbar) { mContext = Preconditions.checkNotNull(context); mCallback = Preconditions.checkNotNull(callback); mMenu = new MenuBuilder(context).setDefaultShowAsAction( Loading Loading @@ -110,17 +112,13 @@ public class FloatingActionMode extends ActionMode { mBottomAllowance = context.getResources() .getDimensionPixelSize(R.dimen.content_rect_bottom_clip_allowance); mDisplaySize = new Point(); setFloatingToolbar(Preconditions.checkNotNull(floatingToolbar)); } public void setFloatingToolbar(FloatingToolbar floatingToolbar) { private void setFloatingToolbar(FloatingToolbar floatingToolbar) { mFloatingToolbar = floatingToolbar .setMenu(mMenu) .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { return mMenu.performItemAction(item, 0); } }); .setOnMenuItemClickListener(item -> mMenu.performItemAction(item, 0)); mFloatingToolbarVisibilityHelper = new FloatingToolbarVisibilityHelper(mFloatingToolbar); mFloatingToolbarVisibilityHelper.activate(); } Loading @@ -142,21 +140,17 @@ public class FloatingActionMode extends ActionMode { @Override public void invalidate() { checkToolbarInitialized(); mCallback.onPrepareActionMode(this, mMenu); invalidateContentRect(); // Will re-layout and show the toolbar if necessary. } @Override public void invalidateContentRect() { checkToolbarInitialized(); mCallback.onGetContentRect(this, mOriginatingView, mContentRect); repositionToolbar(); } public void updateViewLocationInWindow() { checkToolbarInitialized(); mOriginatingView.getLocationOnScreen(mViewPositionOnScreen); mOriginatingView.getRootView().getLocationOnScreen(mRootViewPositionOnScreen); mOriginatingView.getGlobalVisibleRect(mViewRectOnScreen); Loading @@ -172,8 +166,6 @@ public class FloatingActionMode extends ActionMode { } private void repositionToolbar() { checkToolbarInitialized(); mContentRectOnScreen.set(mContentRect); // Offset the content rect into screen coordinates, taking into account any transformations Loading Loading @@ -235,8 +227,6 @@ public class FloatingActionMode extends ActionMode { @Override public void hide(long duration) { checkToolbarInitialized(); if (duration == ActionMode.DEFAULT_HIDE_DURATION) { duration = ViewConfiguration.getDefaultActionModeHideDuration(); } Loading @@ -253,14 +243,12 @@ public class FloatingActionMode extends ActionMode { @Override public void onWindowFocusChanged(boolean hasWindowFocus) { checkToolbarInitialized(); mFloatingToolbarVisibilityHelper.setWindowFocused(hasWindowFocus); mFloatingToolbarVisibilityHelper.updateToolbarVisibility(); } @Override public void finish() { checkToolbarInitialized(); reset(); mCallback.onDestroyActionMode(this); } Loading Loading @@ -290,14 +278,6 @@ public class FloatingActionMode extends ActionMode { return new MenuInflater(mContext); } /** * @throws IllegalStateException */ private void checkToolbarInitialized() { Preconditions.checkState(mFloatingToolbar != null); Preconditions.checkState(mFloatingToolbarVisibilityHelper != null); } private void reset() { mFloatingToolbar.dismiss(); mFloatingToolbarVisibilityHelper.deactivate(); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +2 −3 Original line number Diff line number Diff line Loading @@ -407,8 +407,9 @@ public class StatusBarWindowView extends FrameLayout { mFloatingActionMode.finish(); } cleanupFloatingActionModeViews(); mFloatingToolbar = new FloatingToolbar(mContext, mFakeWindow); final FloatingActionMode mode = new FloatingActionMode(mContext, callback, originatingView); new FloatingActionMode(mContext, callback, originatingView, mFloatingToolbar); mFloatingActionModeOriginatingView = originatingView; mFloatingToolbarPreDrawListener = new ViewTreeObserver.OnPreDrawListener() { Loading @@ -423,8 +424,6 @@ public class StatusBarWindowView extends FrameLayout { private void setHandledFloatingActionMode(ActionMode mode) { mFloatingActionMode = mode; mFloatingToolbar = new FloatingToolbar(mContext, mFakeWindow); ((FloatingActionMode) mFloatingActionMode).setFloatingToolbar(mFloatingToolbar); mFloatingActionMode.invalidate(); // Will show the floating toolbar if necessary. mFloatingActionModeOriginatingView.getViewTreeObserver() .addOnPreDrawListener(mFloatingToolbarPreDrawListener); Loading Loading
core/java/com/android/internal/policy/DecorView.java +2 −3 Original line number Diff line number Diff line Loading @@ -1759,8 +1759,9 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind mFloatingActionMode.finish(); } cleanupFloatingActionModeViews(); mFloatingToolbar = new FloatingToolbar(mContext, mWindow); final FloatingActionMode mode = new FloatingActionMode(mContext, callback, originatingView); new FloatingActionMode(mContext, callback, originatingView, mFloatingToolbar); mFloatingActionModeOriginatingView = originatingView; mFloatingToolbarPreDrawListener = new ViewTreeObserver.OnPreDrawListener() { Loading @@ -1775,8 +1776,6 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind private void setHandledFloatingActionMode(ActionMode mode) { mFloatingActionMode = mode; mFloatingToolbar = new FloatingToolbar(mContext, mWindow); ((FloatingActionMode) mFloatingActionMode).setFloatingToolbar(mFloatingToolbar); mFloatingActionMode.invalidate(); // Will show the floating toolbar if necessary. mFloatingActionModeOriginatingView.getViewTreeObserver() .addOnPreDrawListener(mFloatingToolbarPreDrawListener); Loading
core/java/com/android/internal/view/FloatingActionMode.java +23 −43 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.view; import android.annotation.NonNull; import android.content.Context; import android.graphics.Point; import android.graphics.Rect; Loading @@ -36,26 +37,26 @@ import com.android.internal.widget.FloatingToolbar; import java.util.Arrays; public class FloatingActionMode extends ActionMode { public final class FloatingActionMode extends ActionMode { private static final int MAX_HIDE_DURATION = 3000; private static final int MOVING_HIDE_DELAY = 50; private final Context mContext; private final ActionMode.Callback2 mCallback; private final MenuBuilder mMenu; private final Rect mContentRect; private final Rect mContentRectOnScreen; private final Rect mPreviousContentRectOnScreen; private final int[] mViewPositionOnScreen; private final int[] mPreviousViewPositionOnScreen; private final int[] mRootViewPositionOnScreen; private final Rect mViewRectOnScreen; private final Rect mPreviousViewRectOnScreen; private final Rect mScreenRect; private final View mOriginatingView; @NonNull private final Context mContext; @NonNull private final ActionMode.Callback2 mCallback; @NonNull private final MenuBuilder mMenu; @NonNull private final Rect mContentRect; @NonNull private final Rect mContentRectOnScreen; @NonNull private final Rect mPreviousContentRectOnScreen; @NonNull private final int[] mViewPositionOnScreen; @NonNull private final int[] mPreviousViewPositionOnScreen; @NonNull private final int[] mRootViewPositionOnScreen; @NonNull private final Rect mViewRectOnScreen; @NonNull private final Rect mPreviousViewRectOnScreen; @NonNull private final Rect mScreenRect; @NonNull private final View mOriginatingView; @NonNull private final Point mDisplaySize; private final int mBottomAllowance; private final Point mDisplaySize; private final Runnable mMovingOff = new Runnable() { public void run() { Loading @@ -75,11 +76,12 @@ public class FloatingActionMode extends ActionMode { } }; private FloatingToolbar mFloatingToolbar; private FloatingToolbarVisibilityHelper mFloatingToolbarVisibilityHelper; @NonNull private FloatingToolbar mFloatingToolbar; @NonNull private FloatingToolbarVisibilityHelper mFloatingToolbarVisibilityHelper; public FloatingActionMode( Context context, ActionMode.Callback2 callback, View originatingView) { Context context, ActionMode.Callback2 callback, View originatingView, FloatingToolbar floatingToolbar) { mContext = Preconditions.checkNotNull(context); mCallback = Preconditions.checkNotNull(callback); mMenu = new MenuBuilder(context).setDefaultShowAsAction( Loading Loading @@ -110,17 +112,13 @@ public class FloatingActionMode extends ActionMode { mBottomAllowance = context.getResources() .getDimensionPixelSize(R.dimen.content_rect_bottom_clip_allowance); mDisplaySize = new Point(); setFloatingToolbar(Preconditions.checkNotNull(floatingToolbar)); } public void setFloatingToolbar(FloatingToolbar floatingToolbar) { private void setFloatingToolbar(FloatingToolbar floatingToolbar) { mFloatingToolbar = floatingToolbar .setMenu(mMenu) .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { return mMenu.performItemAction(item, 0); } }); .setOnMenuItemClickListener(item -> mMenu.performItemAction(item, 0)); mFloatingToolbarVisibilityHelper = new FloatingToolbarVisibilityHelper(mFloatingToolbar); mFloatingToolbarVisibilityHelper.activate(); } Loading @@ -142,21 +140,17 @@ public class FloatingActionMode extends ActionMode { @Override public void invalidate() { checkToolbarInitialized(); mCallback.onPrepareActionMode(this, mMenu); invalidateContentRect(); // Will re-layout and show the toolbar if necessary. } @Override public void invalidateContentRect() { checkToolbarInitialized(); mCallback.onGetContentRect(this, mOriginatingView, mContentRect); repositionToolbar(); } public void updateViewLocationInWindow() { checkToolbarInitialized(); mOriginatingView.getLocationOnScreen(mViewPositionOnScreen); mOriginatingView.getRootView().getLocationOnScreen(mRootViewPositionOnScreen); mOriginatingView.getGlobalVisibleRect(mViewRectOnScreen); Loading @@ -172,8 +166,6 @@ public class FloatingActionMode extends ActionMode { } private void repositionToolbar() { checkToolbarInitialized(); mContentRectOnScreen.set(mContentRect); // Offset the content rect into screen coordinates, taking into account any transformations Loading Loading @@ -235,8 +227,6 @@ public class FloatingActionMode extends ActionMode { @Override public void hide(long duration) { checkToolbarInitialized(); if (duration == ActionMode.DEFAULT_HIDE_DURATION) { duration = ViewConfiguration.getDefaultActionModeHideDuration(); } Loading @@ -253,14 +243,12 @@ public class FloatingActionMode extends ActionMode { @Override public void onWindowFocusChanged(boolean hasWindowFocus) { checkToolbarInitialized(); mFloatingToolbarVisibilityHelper.setWindowFocused(hasWindowFocus); mFloatingToolbarVisibilityHelper.updateToolbarVisibility(); } @Override public void finish() { checkToolbarInitialized(); reset(); mCallback.onDestroyActionMode(this); } Loading Loading @@ -290,14 +278,6 @@ public class FloatingActionMode extends ActionMode { return new MenuInflater(mContext); } /** * @throws IllegalStateException */ private void checkToolbarInitialized() { Preconditions.checkState(mFloatingToolbar != null); Preconditions.checkState(mFloatingToolbarVisibilityHelper != null); } private void reset() { mFloatingToolbar.dismiss(); mFloatingToolbarVisibilityHelper.deactivate(); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +2 −3 Original line number Diff line number Diff line Loading @@ -407,8 +407,9 @@ public class StatusBarWindowView extends FrameLayout { mFloatingActionMode.finish(); } cleanupFloatingActionModeViews(); mFloatingToolbar = new FloatingToolbar(mContext, mFakeWindow); final FloatingActionMode mode = new FloatingActionMode(mContext, callback, originatingView); new FloatingActionMode(mContext, callback, originatingView, mFloatingToolbar); mFloatingActionModeOriginatingView = originatingView; mFloatingToolbarPreDrawListener = new ViewTreeObserver.OnPreDrawListener() { Loading @@ -423,8 +424,6 @@ public class StatusBarWindowView extends FrameLayout { private void setHandledFloatingActionMode(ActionMode mode) { mFloatingActionMode = mode; mFloatingToolbar = new FloatingToolbar(mContext, mFakeWindow); ((FloatingActionMode) mFloatingActionMode).setFloatingToolbar(mFloatingToolbar); mFloatingActionMode.invalidate(); // Will show the floating toolbar if necessary. mFloatingActionModeOriginatingView.getViewTreeObserver() .addOnPreDrawListener(mFloatingToolbarPreDrawListener); Loading