Snap for 7695339 from fc88784f8d to sc-v2-release
Change-Id: Ic52f4fd2515167a63e6df53f6ca402f2c7a41a11
This commit is contained in:
@@ -1124,6 +1124,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
if (target.mode == mode && target.taskInfo != null
|
||||
// Compare component name instead of task-id because transitions will promote
|
||||
// the target up to the root task while getTaskId returns the leaf.
|
||||
&& target.taskInfo.topActivity != null
|
||||
&& target.taskInfo.topActivity.equals(mLauncher.getComponentName())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -243,7 +243,19 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
|
||||
if (!mTouchEnabled) {
|
||||
return true;
|
||||
}
|
||||
mControllerCallbacks.onTouchEvent(event);
|
||||
if (mIconLayoutBounds.contains((int) event.getX(), (int) event.getY())) {
|
||||
// Don't allow long pressing between icons.
|
||||
return true;
|
||||
}
|
||||
if (mControllerCallbacks.onTouchEvent(event)) {
|
||||
int oldAction = event.getAction();
|
||||
try {
|
||||
event.setAction(MotionEvent.ACTION_CANCEL);
|
||||
return super.onTouchEvent(event);
|
||||
} finally {
|
||||
event.setAction(oldAction);
|
||||
}
|
||||
}
|
||||
return super.onTouchEvent(event);
|
||||
}
|
||||
|
||||
|
||||
@@ -223,7 +223,11 @@ public class TaskbarViewController {
|
||||
return view -> mControllers.taskbarStashController.updateAndAnimateIsStashedInApp(true);
|
||||
}
|
||||
|
||||
public void onTouchEvent(MotionEvent motionEvent) {
|
||||
/**
|
||||
* Get the first chance to handle TaskbarView#onTouchEvent, and return whether we want to
|
||||
* consume the touch so TaskbarView treats it as an ACTION_CANCEL.
|
||||
*/
|
||||
public boolean onTouchEvent(MotionEvent motionEvent) {
|
||||
final float x = motionEvent.getRawX();
|
||||
final float y = motionEvent.getRawY();
|
||||
switch (motionEvent.getAction()) {
|
||||
@@ -239,6 +243,7 @@ public class TaskbarViewController {
|
||||
mControllers.taskbarStashController.startStashHint(
|
||||
/* animateForward= */ false);
|
||||
mCanceledStashHint = true;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case MotionEvent.ACTION_UP:
|
||||
@@ -249,6 +254,7 @@ public class TaskbarViewController {
|
||||
}
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -805,7 +805,9 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
mActivityInitListener.unregister();
|
||||
mStateCallback.setStateOnUiThread(STATE_GESTURE_CANCELLED | STATE_HANDLER_INVALIDATED);
|
||||
|
||||
TaskViewUtils.setDividerBarShown(mRecentsAnimationTargets.nonApps, true);
|
||||
if (mRecentsAnimationTargets != null) {
|
||||
TaskViewUtils.setDividerBarShown(mRecentsAnimationTargets.nonApps, true);
|
||||
}
|
||||
|
||||
// Defer clearing the controller and the targets until after we've updated the state
|
||||
mRecentsAnimationController = null;
|
||||
|
||||
@@ -33,11 +33,8 @@ import android.content.IntentFilter;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.SystemClock;
|
||||
import android.util.Log;
|
||||
import android.util.SparseIntArray;
|
||||
|
||||
import com.android.launcher3.testing.TestProtocol;
|
||||
import com.android.launcher3.tracing.OverviewComponentObserverProto;
|
||||
import com.android.launcher3.tracing.TouchInteractionServiceProto;
|
||||
import com.android.launcher3.util.SimpleBroadcastReceiver;
|
||||
@@ -132,16 +129,6 @@ public final class OverviewComponentObserver {
|
||||
private void updateOverviewTargets() {
|
||||
ComponentName defaultHome = PackageManagerWrapper.getInstance()
|
||||
.getHomeActivities(new ArrayList<>());
|
||||
if (TestProtocol.sDebugTracing && defaultHome == null) {
|
||||
Log.d(TestProtocol.THIRD_PARTY_LAUNCHER_NOT_SET, "getHomeActivities returned null");
|
||||
while ((defaultHome =
|
||||
PackageManagerWrapper.getInstance().getHomeActivities(new ArrayList<>()))
|
||||
== null) {
|
||||
SystemClock.sleep(10);
|
||||
}
|
||||
Log.d(TestProtocol.THIRD_PARTY_LAUNCHER_NOT_SET,
|
||||
"getHomeActivities returned non-null: " + defaultHome);
|
||||
}
|
||||
|
||||
mIsHomeDisabled = mDeviceState.isHomeDisabled();
|
||||
mIsDefaultHome = Objects.equals(mMyHomeIntent.getComponent(), defaultHome);
|
||||
|
||||
@@ -1351,8 +1351,10 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
}
|
||||
Log.d(TASK_VIEW_ID_CRASH, "taskViewCount: " + getTaskViewCount()
|
||||
+ " " + sb.toString());
|
||||
mRunningTaskViewId = -1;
|
||||
} else {
|
||||
mRunningTaskViewId = newRunningTaskView.getTaskViewId();
|
||||
}
|
||||
mRunningTaskViewId = newRunningTaskView.getTaskViewId();
|
||||
}
|
||||
|
||||
if (mNextPage == INVALID_PAGE) {
|
||||
@@ -1365,7 +1367,10 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
} else if (currentTaskId != -1) {
|
||||
currentTaskView = getTaskViewByTaskId(currentTaskId);
|
||||
if (currentTaskView != null) {
|
||||
setCurrentPage(indexOfChild(currentTaskView));
|
||||
int currentTaskViewIndex = indexOfChild(currentTaskView);
|
||||
if (mCurrentPage != currentTaskViewIndex) {
|
||||
setCurrentPage(currentTaskViewIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -409,6 +409,10 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
|
||||
* Returns true if the touch down at the provided position be ignored
|
||||
*/
|
||||
protected boolean shouldIgnoreTouchDown(float x, float y) {
|
||||
if (mDisplay == DISPLAY_TASKBAR) {
|
||||
// Allow touching within padding on taskbar, given icon sizes are smaller.
|
||||
return false;
|
||||
}
|
||||
return y < getPaddingTop()
|
||||
|| x < getPaddingLeft()
|
||||
|| y > getHeight() - getPaddingBottom()
|
||||
|
||||
@@ -554,6 +554,14 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
|
||||
AbstractFloatingView.closeOpenViews(this, false, TYPE_ICON_SURFACE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMultiWindowModeChanged(boolean isInMultiWindowMode, Configuration newConfig) {
|
||||
super.onMultiWindowModeChanged(isInMultiWindowMode, newConfig);
|
||||
// Always update device profile when multi window mode changed.
|
||||
initDeviceProfile(mDeviceProfile.inv);
|
||||
dispatchDeviceProfileChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
int diff = newConfig.diff(mOldConfig);
|
||||
@@ -592,11 +600,9 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
|
||||
|
||||
private void initDeviceProfile(InvariantDeviceProfile idp) {
|
||||
// Load configuration-specific DeviceProfile
|
||||
mDeviceProfile = idp.getDeviceProfile(this);
|
||||
if (isInMultiWindowMode()) {
|
||||
mDeviceProfile = mDeviceProfile.getMultiWindowProfile(
|
||||
this, getMultiWindowDisplaySize());
|
||||
}
|
||||
mDeviceProfile = isInMultiWindowMode()
|
||||
? mDeviceProfile.getMultiWindowProfile(this, getMultiWindowDisplaySize())
|
||||
: idp.getDeviceProfile(this);
|
||||
|
||||
onDeviceProfileInitiated();
|
||||
mModelWriter = mModel.getWriter(getDeviceProfile().isVerticalBarLayout(), true, this);
|
||||
@@ -1195,7 +1201,7 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
|
||||
// Until the workspace is bound, ensure that we keep the wallpaper offset locked to the
|
||||
// default state, otherwise we will update to the wrong offsets in RTL
|
||||
mWorkspace.lockWallpaperToDefaultPage();
|
||||
mWorkspace.bindAndInitFirstWorkspaceScreen(null /* recycled qsb */);
|
||||
mWorkspace.bindAndInitFirstWorkspaceScreen();
|
||||
mDragController.addDragListener(mWorkspace);
|
||||
|
||||
// Get the search/delete/uninstall bar
|
||||
|
||||
@@ -1046,7 +1046,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
||||
/**
|
||||
* If being flinged and user touches the screen, initiate drag; otherwise don't.
|
||||
*/
|
||||
private void updateIsBeingDraggedOnTouchDown(MotionEvent ev) {
|
||||
protected void updateIsBeingDraggedOnTouchDown(MotionEvent ev) {
|
||||
// mScroller.isFinished should be false when being flinged.
|
||||
final int xDist = Math.abs(mScroller.getFinalX() - mScroller.getCurrX());
|
||||
final boolean finishedScrolling = (mScroller.isFinished() || xDist < mPageSlop / 3);
|
||||
|
||||
@@ -223,6 +223,9 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
|
||||
// Variables relating to touch disambiguation (scrolling workspace vs. scrolling a widget)
|
||||
private float mXDown;
|
||||
private float mYDown;
|
||||
private View mQsb;
|
||||
private boolean mIsEventOverQsb;
|
||||
|
||||
final static float START_DAMPING_TOUCH_SLOP_ANGLE = (float) Math.PI / 6;
|
||||
final static float MAX_SWIPE_ANGLE = (float) Math.PI / 3;
|
||||
final static float TOUCH_SLOP_DAMPING_FACTOR = 4;
|
||||
@@ -548,9 +551,8 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
|
||||
|
||||
/**
|
||||
* Initializes and binds the first page
|
||||
* @param qsb an existing qsb to recycle or null.
|
||||
*/
|
||||
public void bindAndInitFirstWorkspaceScreen(View qsb) {
|
||||
public void bindAndInitFirstWorkspaceScreen() {
|
||||
if (!FeatureFlags.QSB_ON_FIRST_SCREEN) {
|
||||
return;
|
||||
}
|
||||
@@ -558,10 +560,10 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
|
||||
// Add the first page
|
||||
CellLayout firstPage = insertNewWorkspaceScreen(Workspace.FIRST_SCREEN_ID, getChildCount());
|
||||
// Always add a QSB on the first screen.
|
||||
if (qsb == null) {
|
||||
if (mQsb == null) {
|
||||
// In transposed layout, we add the QSB in the Grid. As workspace does not touch the
|
||||
// edges, we do not need a full width QSB.
|
||||
qsb = LayoutInflater.from(getContext())
|
||||
mQsb = LayoutInflater.from(getContext())
|
||||
.inflate(R.layout.search_container_workspace, firstPage, false);
|
||||
}
|
||||
|
||||
@@ -570,8 +572,9 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
|
||||
CellLayout.LayoutParams lp = new CellLayout.LayoutParams(0, 0, firstPage.getCountX(),
|
||||
cellVSpan);
|
||||
lp.canReorder = false;
|
||||
if (!firstPage.addViewToCellLayout(qsb, 0, R.id.search_container_workspace, lp, true)) {
|
||||
if (!firstPage.addViewToCellLayout(mQsb, 0, R.id.search_container_workspace, lp, true)) {
|
||||
Log.e(TAG, "Failed to add to item at (0, 0) to CellLayout");
|
||||
mQsb = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -581,9 +584,8 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
|
||||
disableLayoutTransitions();
|
||||
|
||||
// Recycle the QSB widget
|
||||
View qsb = findViewById(R.id.search_container_workspace);
|
||||
if (qsb != null) {
|
||||
((ViewGroup) qsb.getParent()).removeView(qsb);
|
||||
if (mQsb != null) {
|
||||
((ViewGroup) mQsb.getParent()).removeView(mQsb);
|
||||
}
|
||||
|
||||
// Remove the pages and clear the screen models
|
||||
@@ -596,7 +598,7 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
|
||||
mLauncher.mHandler.removeCallbacksAndMessages(DeferredWidgetRefresh.class);
|
||||
|
||||
// Ensure that the first page is always present
|
||||
bindAndInitFirstWorkspaceScreen(qsb);
|
||||
bindAndInitFirstWorkspaceScreen();
|
||||
|
||||
// Re-enable the layout transitions
|
||||
enableLayoutTransitions();
|
||||
@@ -922,17 +924,25 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
||||
if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
||||
mXDown = ev.getX();
|
||||
mYDown = ev.getY();
|
||||
protected void updateIsBeingDraggedOnTouchDown(MotionEvent ev) {
|
||||
super.updateIsBeingDraggedOnTouchDown(ev);
|
||||
|
||||
mXDown = ev.getX();
|
||||
mYDown = ev.getY();
|
||||
if (mQsb != null) {
|
||||
mTempFXY[0] = mXDown + getScrollX();
|
||||
mTempFXY[1] = mYDown + getScrollY();
|
||||
Utilities.mapCoordInSelfToDescendant(mQsb, this, mTempFXY);
|
||||
mIsEventOverQsb = mQsb.getLeft() <= mTempFXY[0] && mQsb.getRight() >= mTempFXY[0]
|
||||
&& mQsb.getTop() <= mTempFXY[1] && mQsb.getBottom() >= mTempFXY[1];
|
||||
} else {
|
||||
mIsEventOverQsb = false;
|
||||
}
|
||||
return super.onInterceptTouchEvent(ev);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void determineScrollingStart(MotionEvent ev) {
|
||||
if (!isFinishedSwitchingState()) return;
|
||||
if (!isFinishedSwitchingState() || mIsEventOverQsb) return;
|
||||
|
||||
float deltaX = ev.getX() - mXDown;
|
||||
float absDeltaX = Math.abs(deltaX);
|
||||
|
||||
@@ -117,7 +117,6 @@ public final class TestProtocol {
|
||||
public static final String PERMANENT_DIAG_TAG = "TaplTarget";
|
||||
public static final String WORK_PROFILE_REMOVED = "b/159671700";
|
||||
public static final String FALLBACK_ACTIVITY_NO_SET = "b/181019015";
|
||||
public static final String THIRD_PARTY_LAUNCHER_NOT_SET = "b/187080582";
|
||||
public static final String TASK_VIEW_ID_CRASH = "b/195430732";
|
||||
public static final String L3_SWIPE_TO_HOME = "b/192018189";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user