Listen for cases where touch controllers change, and update them

Otherwise we'd be stuck using the old touch controllers until DragLayer
is setup again (e.g. launcher is killed).

Bug: 77921826
Change-Id: I8aac6fc453839902cb2d99279a6bd1549ee17d79
This commit is contained in:
Tony Wickham 2018-04-11 16:16:11 -07:00
parent e833bf3ef5
commit a006830f0a
4 changed files with 23 additions and 6 deletions

View File

@ -16,12 +16,11 @@
package com.android.launcher3.uioverrides;
import static com.android.launcher3.LauncherState.ALL_APPS;
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.LauncherState.OVERVIEW;
import static com.android.launcher3.LauncherState.ALL_APPS;
import android.content.Context;
import android.content.SharedPreferences;
import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.DeviceProfile;
@ -59,6 +58,10 @@ public class UiFactory {
}
}
public static void setOnTouchControllersChangedListener(Context context, Runnable listener) {
OverviewInteractionState.getInstance(context).setOnSwipeUpSettingChangedListener(listener);
}
public static StateHandler[] getStateHandler(Launcher launcher) {
return new StateHandler[] {
launcher.getAllAppsController(), launcher.getWorkspace(),

View File

@ -15,7 +15,6 @@
*/
package com.android.quickstep;
import static com.android.launcher3.Utilities.getPrefs;
import static com.android.systemui.shared.system.NavigationBarCompat.FLAG_DISABLE_QUICK_SCRUB;
import static com.android.systemui.shared.system.NavigationBarCompat.FLAG_DISABLE_SWIPE_UP;
import static com.android.systemui.shared.system.NavigationBarCompat.FLAG_HIDE_BACK_BUTTON;
@ -86,6 +85,8 @@ public class OverviewInteractionState {
private boolean mBackButtonVisible = true;
private boolean mSwipeUpEnabled = true;
private Runnable mOnSwipeUpSettingChangedListener;
private OverviewInteractionState(Context context) {
mUiHandler = new Handler(this::handleUiMessage);
mBgHandler = new Handler(UiThreadHelper.getBackgroundLooper(), this::handleBgMessage);
@ -124,12 +125,19 @@ public class OverviewInteractionState {
break;
case MSG_SET_SWIPE_UP_ENABLED:
mSwipeUpEnabled = msg.arg1 != 0;
if (mOnSwipeUpSettingChangedListener != null) {
mOnSwipeUpSettingChangedListener.run();
}
break;
}
applyFlags();
return true;
}
public void setOnSwipeUpSettingChangedListener(Runnable listener) {
mOnSwipeUpSettingChangedListener = listener;
}
@WorkerThread
private void applyFlags() {
if (mISystemUiProxy == null) {

View File

@ -18,7 +18,6 @@ package com.android.launcher3;
import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION;
import static android.content.pm.ActivityInfo.CONFIG_SCREEN_SIZE;
import static com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_EXIT_DELAY;
import static com.android.launcher3.LauncherState.ALL_APPS;
import static com.android.launcher3.LauncherState.NORMAL;
@ -81,7 +80,6 @@ import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.dragndrop.DragController;
import com.android.launcher3.dragndrop.DragLayer;
import com.android.launcher3.dragndrop.DragView;
import com.android.launcher3.dynamicui.WallpaperColorInfo;
import com.android.launcher3.folder.FolderIcon;
import com.android.launcher3.folder.FolderIconPreviewVerifier;
import com.android.launcher3.keyboard.CustomActionsPopup;
@ -923,7 +921,9 @@ public class Launcher extends BaseDraggingActivity
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
// Setup the drag layer
mDragLayer.setup(mDragController);
Runnable setupDragLayer = () -> mDragLayer.setup(mDragController);
UiFactory.setOnTouchControllersChangedListener(this, setupDragLayer);
setupDragLayer.run();
mWorkspace.setup(mDragController);
// Until the workspace is bound, ensure that we keep the wallpaper offset locked to the
@ -1327,6 +1327,8 @@ public class Launcher extends BaseDraggingActivity
unregisterReceiver(mReceiver);
mWorkspace.removeFolderListeners();
UiFactory.setOnTouchControllersChangedListener(this, null);
// Stop callbacks from LauncherModel
// It's possible to receive onDestroy after a new Launcher activity has
// been created. In this case, don't interfere with the new Launcher.

View File

@ -16,6 +16,8 @@
package com.android.launcher3.uioverrides;
import android.content.Context;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherStateManager.StateHandler;
import com.android.launcher3.util.TouchController;
@ -27,6 +29,8 @@ public class UiFactory {
launcher.getDragController(), new AllAppsSwipeController(launcher)};
}
public static void setOnTouchControllersChangedListener(Context context, Runnable listener) { }
public static StateHandler[] getStateHandler(Launcher launcher) {
return new StateHandler[] {
launcher.getAllAppsController(), launcher.getWorkspace() };