From c5dfdd152061f6e766c47e14a4df50c9fad791a2 Mon Sep 17 00:00:00 2001 From: mattsziklay Date: Mon, 10 Apr 2023 13:24:52 -0700 Subject: Prevent desktop mode corner handles from triggering back gesture. Adds exclusion logic to EdgeBackGestureHandler to prevent back gestures when attempting to resize a desktop mode task. Bug: 269661917 Test: Manual; resize or drag task to side and resize a corner without triggering gesture. Change-Id: I32c4c3687a03ed8350bffaa13603c1b9cb23fb3c --- .../gestural/EdgeBackGestureHandler.java | 24 +++++++++++++++++++++- .../src/com/android/systemui/wmshell/WMShell.java | 3 ++- .../com/android/systemui/wmshell/WMShellTest.java | 2 +- 3 files changed, 26 insertions(+), 3 deletions(-) (limited to 'packages/SystemUI') diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java index b9ef916eebdf..41e3e6d83eea 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java @@ -89,6 +89,7 @@ import com.android.systemui.tracing.nano.EdgeBackGestureHandlerProto; import com.android.systemui.tracing.nano.SystemUiTraceProto; import com.android.systemui.util.Assert; import com.android.wm.shell.back.BackAnimation; +import com.android.wm.shell.desktopmode.DesktopMode; import com.android.wm.shell.pip.Pip; import java.io.PrintWriter; @@ -190,6 +191,7 @@ public class EdgeBackGestureHandler implements PluginListener mPipOptional; + private final Optional mDesktopModeOptional; private final FalsingManager mFalsingManager; private final Configuration mLastReportedConfig = new Configuration(); // Activities which should not trigger Back gesture. @@ -204,6 +206,7 @@ public class EdgeBackGestureHandler implements PluginListener mNavBarEdgePanelProvider; private final Provider @@ -328,6 +331,9 @@ public class EdgeBackGestureHandler implements PluginListener mOnIsInPipStateChangedListener = (isInPip) -> mIsInPip = isInPip; + private final Consumer mDesktopCornersChangedListener = + (desktopExcludeRegion) -> mDesktopModeExcludeRegion.set(desktopExcludeRegion); + private final UserTracker.Callback mUserChangedCallback = new UserTracker.Callback() { @Override @@ -352,6 +358,7 @@ public class EdgeBackGestureHandler implements PluginListener pipOptional, + Optional desktopModeOptional, FalsingManager falsingManager, Provider navigationBarEdgePanelProvider, Provider backGestureTfClassifierProviderProvider, @@ -372,6 +379,7 @@ public class EdgeBackGestureHandler implements PluginListener pip.setOnIsInPipStateChangedListener(mOnIsInPipStateChangedListener)); + mDesktopModeOptional.ifPresent( + dm -> dm.addDesktopGestureExclusionRegionListener( + mDesktopCornersChangedListener, mMainExecutor)); try { mWindowManagerService.registerSystemGestureExclusionListener( @@ -802,11 +813,17 @@ public class EdgeBackGestureHandler implements PluginListener