Close the KQS view when touching the gesture nav region

Also, stop handling KQS open/close during gestures

Flag: LEGACY ENABLE_KEYBOARD_QUICK_SWITCH ENABLED
Fixes: 328689890
Fixes: 328689534
Fixes: 328692760
Test: attempted gestures while KQS is shown. attempted KQS while attempting gestures
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:14d912b062e69fe8bc4729b6f8b40e53d5b4a669)
Merged-In: Idbd1f9cef09d9fbf611350d0847d94ccf8300369
Change-Id: Idbd1f9cef09d9fbf611350d0847d94ccf8300369
24D1-dev is based on 24Q2-release. Therefore, we merged this CL to 24D1-dev.
This commit is contained in:
Schneider Victor-tulias
2024-03-13 16:19:21 -04:00
committed by Cherrypicker Worker
parent d6b0dc8970
commit 5a85b4f2df
5 changed files with 45 additions and 23 deletions

View File

@@ -193,10 +193,14 @@ public final class KeyboardQuickSwitchController implements
}
void closeQuickSwitchView() {
closeQuickSwitchView(true);
}
void closeQuickSwitchView(boolean animate) {
if (mQuickSwitchViewController == null) {
return;
}
mQuickSwitchViewController.closeQuickSwitchView(true);
mQuickSwitchViewController.closeQuickSwitchView(animate);
}
/**

View File

@@ -1558,4 +1558,9 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
public float getStashedTaskbarScale() {
return mControllers.stashedHandleViewController.getStashedHandleHintScale().value;
}
/** Closes the KeyboardQuickSwitchView without an animation if open. */
public void closeKeyboardQuickSwitchView() {
mControllers.keyboardQuickSwitchController.closeQuickSwitchView(false);
}
}

View File

@@ -248,7 +248,15 @@ public class OverviewCommandHelper {
case TYPE_SHOW:
// already visible
return true;
case TYPE_KEYBOARD_INPUT: {
if (visibleRecentsView.isHandlingTouch()) {
return true;
}
}
case TYPE_HIDE: {
if (visibleRecentsView.isHandlingTouch()) {
return true;
}
mKeyboardTaskFocusIndex = INVALID_PAGE;
int currentPage = visibleRecentsView.getNextPage();
TaskView tv = (currentPage >= 0

View File

@@ -754,6 +754,10 @@ public class TouchInteractionService extends Service {
boolean isOneHandedModeActive = mDeviceState.isOneHandedModeActive();
boolean isInSwipeUpTouchRegion = mRotationTouchHelper.isInSwipeUpTouchRegion(event);
TaskbarActivityContext tac = mTaskbarManager.getCurrentActivityContext();
if (isInSwipeUpTouchRegion && tac != null) {
tac.closeKeyboardQuickSwitchView();
}
if ((!isOneHandedModeActive && isInSwipeUpTouchRegion)
|| isHoverActionWithoutConsumer) {
reasonString.append(!isOneHandedModeActive && isInSwipeUpTouchRegion

View File

@@ -4231,30 +4231,31 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_TAB:
return snapToPageRelative(event.isShiftPressed() ? -1 : 1, true /* cycle */,
DIRECTION_TAB);
case KeyEvent.KEYCODE_DPAD_RIGHT:
return snapToPageRelative(mIsRtl ? -1 : 1, true /* cycle */, DIRECTION_RIGHT);
case KeyEvent.KEYCODE_DPAD_LEFT:
return snapToPageRelative(mIsRtl ? 1 : -1, true /* cycle */, DIRECTION_LEFT);
case KeyEvent.KEYCODE_DPAD_UP:
return snapToPageRelative(1, false /* cycle */, DIRECTION_UP);
case KeyEvent.KEYCODE_DPAD_DOWN:
return snapToPageRelative(1, false /* cycle */, DIRECTION_DOWN);
case KeyEvent.KEYCODE_DEL:
case KeyEvent.KEYCODE_FORWARD_DEL:
if (isHandlingTouch() || event.getAction() != KeyEvent.ACTION_DOWN) {
return super.dispatchKeyEvent(event);
}
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_TAB:
return snapToPageRelative(event.isShiftPressed() ? -1 : 1, true /* cycle */,
DIRECTION_TAB);
case KeyEvent.KEYCODE_DPAD_RIGHT:
return snapToPageRelative(mIsRtl ? -1 : 1, true /* cycle */, DIRECTION_RIGHT);
case KeyEvent.KEYCODE_DPAD_LEFT:
return snapToPageRelative(mIsRtl ? 1 : -1, true /* cycle */, DIRECTION_LEFT);
case KeyEvent.KEYCODE_DPAD_UP:
return snapToPageRelative(1, false /* cycle */, DIRECTION_UP);
case KeyEvent.KEYCODE_DPAD_DOWN:
return snapToPageRelative(1, false /* cycle */, DIRECTION_DOWN);
case KeyEvent.KEYCODE_DEL:
case KeyEvent.KEYCODE_FORWARD_DEL:
dismissCurrentTask();
return true;
case KeyEvent.KEYCODE_NUMPAD_DOT:
if (event.isAltPressed()) {
// Numpad DEL pressed while holding Alt.
dismissCurrentTask();
return true;
case KeyEvent.KEYCODE_NUMPAD_DOT:
if (event.isAltPressed()) {
// Numpad DEL pressed while holding Alt.
dismissCurrentTask();
return true;
}
}
}
}
return super.dispatchKeyEvent(event);
}