Merge "Maintain fake nav bar position in overview for landscape" into ub-launcher3-rvc-dev

This commit is contained in:
Vinit Nayak
2020-05-21 20:59:25 +00:00
committed by Android (Google) Code Review
6 changed files with 51 additions and 9 deletions
@@ -780,12 +780,6 @@ public abstract class BaseSwipeUpHandlerV2<T extends StatefulActivity<?>, Q exte
}
}
if (endTarget == RECENTS || endTarget == HOME) {
// Since we're now done quickStepping, we want to only listen for touch events
// for the main orientation's nav bar, instead of multiple
mDeviceState.enableMultipleRegions(false);
}
if (mDeviceState.isOverviewDisabled() && (endTarget == RECENTS || endTarget == LAST_TASK)) {
return LAST_TASK;
}
@@ -1243,6 +1237,7 @@ public abstract class BaseSwipeUpHandlerV2<T extends StatefulActivity<?>, Q exte
}
ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", true);
doLogGesture(HOME);
mDeviceState.enableMultipleRegions(false);
}
protected abstract void finishRecentsControllerToHome(Runnable callback);
@@ -1258,6 +1253,7 @@ public abstract class BaseSwipeUpHandlerV2<T extends StatefulActivity<?>, Q exte
SystemUiProxy.INSTANCE.get(mContext).onOverviewShown(false, TAG);
doLogGesture(RECENTS);
mDeviceState.onSwipeUpToOverview(mActivityInterface);
reset();
}
@@ -139,6 +139,11 @@ public final class FallbackActivityInterface extends
|| super.deferStartingActivity(deviceState, ev);
}
@Override
public void onExitOverview(RecentsAnimationDeviceState deviceState, Runnable exitRunnable) {
// no-op, fake landscape not supported for 3P
}
@Override
public int getContainerType() {
RecentsActivity activity = getCreatedActivity();
@@ -44,6 +44,7 @@ import com.android.launcher3.anim.PendingAnimation;
import com.android.launcher3.appprediction.PredictionUiStateManager;
import com.android.launcher3.statehandlers.DepthController;
import com.android.launcher3.statehandlers.DepthController.ClampedDepthProperty;
import com.android.launcher3.statemanager.StateManager;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.touch.PagedOrientationHandler;
import com.android.launcher3.userevent.nano.LauncherLogProto;
@@ -224,6 +225,27 @@ public final class LauncherActivityInterface extends
}
@Override
public void onExitOverview(RecentsAnimationDeviceState deviceState, Runnable exitRunnable) {
final StateManager<LauncherState> stateManager = getCreatedActivity().getStateManager();
stateManager.addStateListener(
new StateManager.StateListener<LauncherState>() {
@Override
public void onStateTransitionComplete(LauncherState toState) {
// Are we going from Recents to Workspace?
if (toState == LauncherState.NORMAL) {
exitRunnable.run();
// reset layout on swipe to home
RecentsView recentsView = getCreatedActivity().getOverviewPanel();
recentsView.setLayoutRotation(deviceState.getCurrentActiveRotation(),
deviceState.getDisplayRotation());
stateManager.removeStateListener(this);
}
}
});
}
@Override
public Rect getOverviewWindowBounds(Rect homeBounds, RemoteAnimationTargetCompat target) {
return homeBounds;
@@ -554,7 +554,6 @@ public class TouchInteractionService extends Service implements PluginListener<O
|| previousGestureState.isRecentsAnimationRunning()
? newBaseConsumer(previousGestureState, newGestureState, event)
: mResetGestureInputConsumer;
// TODO(b/149880412): 2 button landscape mode is wrecked. Fixit!
if (mDeviceState.isGesturalNavMode()) {
handleOrientationSetup(base);
}
@@ -150,6 +150,9 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
return deviceState.isInDeferredGestureRegion(ev);
}
public abstract void onExitOverview(RecentsAnimationDeviceState deviceState,
Runnable exitRunnable);
/**
* Updates the prediction state to the overview state.
*/
@@ -45,7 +45,6 @@ import android.graphics.Region;
import android.os.Process;
import android.os.UserManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.MotionEvent;
import androidx.annotation.BinderThread;
@@ -107,7 +106,7 @@ public class RecentsAnimationDeviceState implements
if (frozen) {
return;
}
mOrientationTouchTransformer.enableMultipleRegions(false, mDefaultDisplay.getInfo());
enableMultipleRegions(false);
}
};
@@ -118,6 +117,13 @@ public class RecentsAnimationDeviceState implements
private final List<ComponentName> mGestureBlockedActivities;
private Runnable mOnDestroyFrozenTaskRunnable;
/**
* Set to true when user swipes to recents. In recents, we ignore the state of the recents
* task list being frozen or not to allow the user to keep interacting with nav bar rotation
* they went into recents with as opposed to defaulting to the default display rotation.
* TODO: (b/156984037) For when user rotates after entering overview
*/
private boolean mInOverview;
public RecentsAnimationDeviceState(Context context) {
mContext = context;
@@ -508,7 +514,18 @@ public class RecentsAnimationDeviceState implements
mOrientationTouchTransformer.transform(event);
}
void onSwipeUpToOverview(BaseActivityInterface activityInterface) {
mInOverview = true;
activityInterface.onExitOverview(this, () -> {
mInOverview = false;
enableMultipleRegions(false);
});
}
void enableMultipleRegions(boolean enable) {
if (mInOverview) {
return;
}
mOrientationTouchTransformer.enableMultipleRegions(enable, mDefaultDisplay.getInfo());
UI_HELPER_EXECUTOR.execute(() -> {
int quickStepStartingRotation =