mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-01 00:06:47 +00:00
Handle more cases in FocusHelper#handleHotseatButtonKeyEvent().
The first of these cases seems like they should already have been present, and the last couple allow you to switch pages by hitting arrow keys on the edges of the hotseat. Bug: 25589939 Change-Id: I9378b209250f7dc376fa97efde979bcee2979537
This commit is contained in:
@@ -174,7 +174,7 @@ public class FocusHelper {
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles key events in the workspace hot seat (bottom of the screen).
|
||||
* Handles key events in the workspace hotseat (bottom of the screen).
|
||||
* <p>Currently we don't special case for the phone UI in different orientations, even though
|
||||
* the hotseat is on the side in landscape mode. This is to ensure that accessibility
|
||||
* consistency is maintained across rotations.
|
||||
@@ -263,12 +263,38 @@ public class FocusHelper {
|
||||
countY, matrix, iconIndex, pageIndex, pageCount, Utilities.isRtl(v.getResources()));
|
||||
|
||||
View newIcon = null;
|
||||
if (newIconIndex == FocusLogic.NEXT_PAGE_FIRST_ITEM) {
|
||||
parent = getCellLayoutChildrenForIndex(workspace, pageIndex + 1);
|
||||
newIcon = parent.getChildAt(0);
|
||||
// TODO(hyunyoungs): handle cases where the child is not an icon but
|
||||
// a folder or a widget.
|
||||
workspace.snapToPage(pageIndex + 1);
|
||||
switch (newIconIndex) {
|
||||
case FocusLogic.NEXT_PAGE_FIRST_ITEM:
|
||||
parent = getCellLayoutChildrenForIndex(workspace, pageIndex + 1);
|
||||
newIcon = parent.getChildAt(0);
|
||||
// TODO(hyunyoungs): handle cases where the child is not an icon but
|
||||
// a folder or a widget.
|
||||
workspace.snapToPage(pageIndex + 1);
|
||||
break;
|
||||
case FocusLogic.PREVIOUS_PAGE_FIRST_ITEM:
|
||||
parent = getCellLayoutChildrenForIndex(workspace, pageIndex - 1);
|
||||
newIcon = parent.getChildAt(0);
|
||||
// TODO(hyunyoungs): handle cases where the child is not an icon but
|
||||
// a folder or a widget.
|
||||
workspace.snapToPage(pageIndex - 1);
|
||||
break;
|
||||
case FocusLogic.PREVIOUS_PAGE_LAST_ITEM:
|
||||
parent = getCellLayoutChildrenForIndex(workspace, pageIndex - 1);
|
||||
newIcon = parent.getChildAt(parent.getChildCount() - 1);
|
||||
// TODO(hyunyoungs): handle cases where the child is not an icon but
|
||||
// a folder or a widget.
|
||||
workspace.snapToPage(pageIndex - 1);
|
||||
break;
|
||||
case FocusLogic.PREVIOUS_PAGE_LEFT_COLUMN:
|
||||
case FocusLogic.PREVIOUS_PAGE_RIGHT_COLUMN:
|
||||
// Go to the previous page but keep the focus on the same hotseat icon.
|
||||
workspace.snapToPage(pageIndex - 1);
|
||||
break;
|
||||
case FocusLogic.NEXT_PAGE_LEFT_COLUMN:
|
||||
case FocusLogic.NEXT_PAGE_RIGHT_COLUMN:
|
||||
// Go to the next page but keep the focus on the same hotseat icon.
|
||||
workspace.snapToPage(pageIndex + 1);
|
||||
break;
|
||||
}
|
||||
if (parent == iconParent && newIconIndex >= iconParent.getChildCount()) {
|
||||
newIconIndex -= iconParent.getChildCount();
|
||||
@@ -368,7 +394,7 @@ public class FocusHelper {
|
||||
if (parent != null) {
|
||||
iconLayout = (CellLayout) parent.getParent();
|
||||
matrix = FocusLogic.createSparseMatrix(iconLayout,
|
||||
iconLayout.getCountX(), row);
|
||||
iconLayout.getCountX(), row);
|
||||
newIconIndex = FocusLogic.handleKeyEvent(keyCode, countX + 1, countY,
|
||||
matrix, FocusLogic.PIVOT, newPageIndex, pageCount,
|
||||
Utilities.isRtl(v.getResources()));
|
||||
|
||||
Reference in New Issue
Block a user