mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-27 15:26:58 +00:00
Fixing some missing swipecancelled events
Updating NavBarPosition to expose more constructor and getters Flag: com.android.launcher3.use_activity_overlay Test: atest SwipeTransitionTest Bug: 340432854 Change-Id: I86193fa26c0337d50e366cecb2d7debf37940fe1
This commit is contained in:
@@ -1275,7 +1275,7 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer
|
||||
if ((flags & CHANGE_NAVIGATION_MODE) != 0) {
|
||||
getDragLayer().recreateControllers();
|
||||
if (mActionsView != null) {
|
||||
mActionsView.updateVerticalMargin(info.navigationMode);
|
||||
mActionsView.updateVerticalMargin(info.getNavigationMode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ public class RotationTouchHelper implements DisplayInfoChangeListener, SafeClose
|
||||
// Register for navigation mode changes
|
||||
mDisplayController.addChangeListener(this);
|
||||
DisplayController.Info info = mDisplayController.getInfo();
|
||||
onDisplayInfoChangedInternal(info, CHANGE_ALL, info.navigationMode.hasGestures);
|
||||
onDisplayInfoChangedInternal(info, CHANGE_ALL, info.getNavigationMode().hasGestures);
|
||||
runOnDestroy(() -> mDisplayController.removeChangeListener(this));
|
||||
|
||||
mOrientationListener = new OrientationEventListener(mContext) {
|
||||
@@ -291,7 +291,7 @@ public class RotationTouchHelper implements DisplayInfoChangeListener, SafeClose
|
||||
}
|
||||
|
||||
if ((flags & CHANGE_NAVIGATION_MODE) != 0) {
|
||||
NavigationMode newMode = info.navigationMode;
|
||||
NavigationMode newMode = info.getNavigationMode();
|
||||
mOrientationTouchTransformer.setNavigationMode(newMode, mDisplayController.getInfo(),
|
||||
mContext.getResources());
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@ public class SettingsChangeLogger implements
|
||||
@Override
|
||||
public void onDisplayInfoChanged(Context context, Info info, int flags) {
|
||||
if ((flags & CHANGE_NAVIGATION_MODE) != 0) {
|
||||
mNavMode = info.navigationMode;
|
||||
mNavMode = info.getNavigationMode();
|
||||
mStatsLogManager.logger().log(mNavMode.launcherEvent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.quickstep.util;
|
||||
|
||||
import static com.android.launcher3.util.NavigationMode.NO_BUTTON;
|
||||
|
||||
import android.view.Surface;
|
||||
|
||||
import com.android.launcher3.util.DisplayController.Info;
|
||||
import com.android.launcher3.util.NavigationMode;
|
||||
|
||||
/**
|
||||
* Utility class to check nav bar position.
|
||||
*/
|
||||
public class NavBarPosition {
|
||||
|
||||
private final boolean mIsTablet;
|
||||
private final NavigationMode mMode;
|
||||
private final int mDisplayRotation;
|
||||
|
||||
public NavBarPosition(NavigationMode mode, Info info) {
|
||||
mIsTablet = info.isTablet(info.realBounds);
|
||||
mMode = mode;
|
||||
mDisplayRotation = info.rotation;
|
||||
}
|
||||
|
||||
public boolean isRightEdge() {
|
||||
return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_90 && !mIsTablet;
|
||||
}
|
||||
|
||||
public boolean isLeftEdge() {
|
||||
return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_270 && !mIsTablet;
|
||||
}
|
||||
|
||||
public float getRotation() {
|
||||
return isLeftEdge() ? 90 : (isRightEdge() ? -90 : 0);
|
||||
}
|
||||
}
|
||||
41
quickstep/src/com/android/quickstep/util/NavBarPosition.kt
Normal file
41
quickstep/src/com/android/quickstep/util/NavBarPosition.kt
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (C) 2024 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.quickstep.util
|
||||
|
||||
import android.view.Surface
|
||||
import com.android.launcher3.util.DisplayController.Info
|
||||
import com.android.launcher3.util.NavigationMode
|
||||
import com.android.launcher3.util.NavigationMode.NO_BUTTON
|
||||
|
||||
/** Utility class to check nav bar position. */
|
||||
data class NavBarPosition(
|
||||
val isTablet: Boolean,
|
||||
val displayRotation: Int,
|
||||
val mode: NavigationMode
|
||||
) {
|
||||
constructor(
|
||||
mode: NavigationMode,
|
||||
info: Info
|
||||
) : this(info.isTablet(info.realBounds), info.rotation, mode)
|
||||
|
||||
val isRightEdge: Boolean
|
||||
get() = mode != NO_BUTTON && displayRotation == Surface.ROTATION_90 && !isTablet
|
||||
val isLeftEdge: Boolean
|
||||
get() = mode != NO_BUTTON && displayRotation == Surface.ROTATION_270 && !isTablet
|
||||
|
||||
val rotation: Float
|
||||
get() = if (isLeftEdge) 90f else if (isRightEdge) -90f else 0f
|
||||
}
|
||||
@@ -99,6 +99,7 @@ public class TriggerSwipeUpTouchTracker {
|
||||
if (mDisableHorizontalSwipe
|
||||
&& Math.abs(displacementX) > Math.abs(displacementY)) {
|
||||
// Horizontal gesture is not allowed in this region
|
||||
mOnSwipeUp.onSwipeUpCancelled();
|
||||
endTouchTracking();
|
||||
break;
|
||||
}
|
||||
@@ -111,6 +112,7 @@ public class TriggerSwipeUpTouchTracker {
|
||||
}
|
||||
|
||||
case ACTION_CANCEL:
|
||||
mOnSwipeUp.onSwipeUpCancelled();
|
||||
endTouchTracking();
|
||||
break;
|
||||
|
||||
|
||||
@@ -162,8 +162,8 @@ public class NavigationModeSwitchRule implements TestRule {
|
||||
final Context targetContext = getInstrumentation().getTargetContext();
|
||||
final DisplayController.DisplayInfoChangeListener listener =
|
||||
(context, info, flags) -> {
|
||||
if (LauncherInstrumentation.getNavigationModel(info.navigationMode.resValue)
|
||||
== expectedMode) {
|
||||
if (LauncherInstrumentation.getNavigationModel(
|
||||
info.getNavigationMode().resValue) == expectedMode) {
|
||||
latch.countDown();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -18,6 +18,7 @@ import org.mockito.Mock
|
||||
import org.mockito.Mockito.reset
|
||||
import org.mockito.Mockito.verify
|
||||
import org.mockito.MockitoAnnotations
|
||||
import org.mockito.kotlin.doReturn
|
||||
import org.mockito.kotlin.verifyZeroInteractions
|
||||
import org.mockito.kotlin.whenever
|
||||
|
||||
@@ -79,7 +80,7 @@ class RecentsAnimationDeviceStateTest {
|
||||
|
||||
@Test
|
||||
fun onDisplayInfoChanged_noButton_registerExclusionListener() {
|
||||
whenever(windowManagerProxy.getNavigationMode(context)).thenReturn(NavigationMode.NO_BUTTON)
|
||||
doReturn(NavigationMode.NO_BUTTON).whenever(info).getNavigationMode()
|
||||
|
||||
underTest.onDisplayInfoChanged(context, info, CHANGE_ROTATION or CHANGE_NAVIGATION_MODE)
|
||||
|
||||
|
||||
@@ -2402,7 +2402,7 @@ public class DeviceProfile {
|
||||
mTransposeLayoutWithOrientation = !mInfo.isTablet(mWindowBounds);
|
||||
}
|
||||
if (mIsGestureMode == null) {
|
||||
mIsGestureMode = mInfo.navigationMode.hasGestures;
|
||||
mIsGestureMode = mInfo.getNavigationMode().hasGestures;
|
||||
}
|
||||
if (mDotRendererCache == null) {
|
||||
mDotRendererCache = new SparseArray<>();
|
||||
|
||||
@@ -170,7 +170,7 @@ public class DisplayController implements ComponentCallbacks, SafeCloseable {
|
||||
* Returns the current navigation mode
|
||||
*/
|
||||
public static NavigationMode getNavigationMode(Context context) {
|
||||
return INSTANCE.get(context).getInfo().navigationMode;
|
||||
return INSTANCE.get(context).getInfo().getNavigationMode();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -302,7 +302,7 @@ public class DisplayController implements ComponentCallbacks, SafeCloseable {
|
||||
Info newInfo = new Info(displayInfoContext, wmProxy, oldInfo.mPerDisplayBounds);
|
||||
|
||||
if (newInfo.densityDpi != oldInfo.densityDpi || newInfo.fontScale != oldInfo.fontScale
|
||||
|| newInfo.navigationMode != oldInfo.navigationMode) {
|
||||
|| newInfo.getNavigationMode() != oldInfo.getNavigationMode()) {
|
||||
// Cache may not be valid anymore, recreate without cache
|
||||
newInfo = new Info(displayInfoContext, wmProxy,
|
||||
wmProxy.estimateInternalDisplayBounds(displayInfoContext));
|
||||
@@ -318,7 +318,7 @@ public class DisplayController implements ComponentCallbacks, SafeCloseable {
|
||||
if (newInfo.densityDpi != oldInfo.densityDpi || newInfo.fontScale != oldInfo.fontScale) {
|
||||
change |= CHANGE_DENSITY;
|
||||
}
|
||||
if (newInfo.navigationMode != oldInfo.navigationMode) {
|
||||
if (newInfo.getNavigationMode() != oldInfo.getNavigationMode()) {
|
||||
change |= CHANGE_NAVIGATION_MODE;
|
||||
}
|
||||
if (!newInfo.supportedBounds.equals(oldInfo.supportedBounds)
|
||||
@@ -369,7 +369,7 @@ public class DisplayController implements ComponentCallbacks, SafeCloseable {
|
||||
// Configuration property
|
||||
public final float fontScale;
|
||||
private final int densityDpi;
|
||||
public final NavigationMode navigationMode;
|
||||
private final NavigationMode navigationMode;
|
||||
private final PortraitSize mScreenSizeDp;
|
||||
|
||||
// WindowBounds
|
||||
@@ -553,7 +553,7 @@ public class DisplayController implements ComponentCallbacks, SafeCloseable {
|
||||
pw.println(" rotation=" + info.rotation);
|
||||
pw.println(" fontScale=" + info.fontScale);
|
||||
pw.println(" densityDpi=" + info.densityDpi);
|
||||
pw.println(" navigationMode=" + info.navigationMode.name());
|
||||
pw.println(" navigationMode=" + info.getNavigationMode().name());
|
||||
pw.println(" isTaskbarPinned=" + info.mIsTaskbarPinned);
|
||||
pw.println(" isTaskbarPinnedInDesktopMode=" + info.mIsTaskbarPinnedInDesktopMode);
|
||||
pw.println(" isInDesktopMode=" + info.mIsInDesktopMode);
|
||||
|
||||
Reference in New Issue
Block a user