History log of /packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
c06af333cbcebb183d13d004cccf5c9d69a70af0 28-Mar-2017 Mario Bertschler <bmario@google.com> Minor Refactoring only: no functional change

- organizing imports
- remove redundant modifiers on LauncherCallback interface
- fix typos

Change-Id: I61eb985cac7c1379b6b804a67d4f234386d3d1b4
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
66b24572e41a13ba5b85b37cf7be64804299c8f6 22-Sep-2016 Sunny Goyal <sunnygoyal@google.com> Exposing custom actions using keyboard shortcut

Keyboard shortcuts:
ctrl+A => Open all apps
ctrl+S => shows deep shortcuts
ctrl+O => shows custom actions popup

This also removes the direct delete/uninstall key shortcuts, making
actidental icon removal less likely

Bug: 24065447
Change-Id: Iae63370c0f33620628567cffd4df024064d4d02e
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
bb011dad4e69bec027be1e00d573a3095b318b43 16-Jun-2016 Sunny Goyal <sunnygoyal@google.com> Adding a flag (enabled by default) to remove the all-apps button.

All apps can still be opened by clicking the caret.

Bug: 29398447
Change-Id: I61f1b05cea83a0a49d7cc16c518c5419618ba779
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
329d8bfa0438980d93aab8c9744c4060acb5f0ba 04-Dec-2015 Tony Wickham <twickham@google.com> Cleanup keyboard code.

This should be the last keyboard CL.
- Fix bug: couldn't focus All Apps button in some cases when the All
Apps column was skipped over. Also added test case for this.
- Stop explicitly passing countX and countY to handleKeyEvent, as
these had to match the matrix dimensions anyways.
- Rename createSparseMatrix() - there were 3 methods of the same name,
but all had different purposes. This is confusing both from a
readability standpoint and also when looking at stack traces.

Change-Id: I08ba8411674fcea43a608856c114dee8dbd22398
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
af78b59af19264105b8ce856defa5342d6fd584a 11-Nov-2015 Tony Wickham <twickham@google.com> Make sure pages are always accessible via left/right arrow keys.

- Handle NextPageFirstItem as first focusable item in reading order
- Handle PreviousPageLastItem as last focusable item in reading order
- Check the hotseat after the workspace in both cases above
- Dpad horizontal navigation (left/right) uses these as a last
resort (Rule3) to guarantee an item takes focus if a page exists

Note that it is necessary to search for a focusable item because
widgets are not yet focusable.

Bug: 25591057
Change-Id: I953648bd76c657d660a38427fdd4108bf9963c23
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
6cbd22279e5e033c67863a3db851e0f43be9ddff 10-Nov-2015 Tony Wickham <twickham@google.com> Add special column for All Apps button in FocusLogic's sparse matrix.

The All Apps button creates a number of edge cases, mainly because it
causes the hotseat to sometimes have an extra column than the workspace.
Previously, we sort of swept these problems under the rug by simply
ignoring the All Apps button if other icons were present in the hotseat,
with the assumption that those other icons should get focus instead of
the All Apps button. (If possible, we want to stay in the same column
when moving from the workspace to the hotseat.) But this doesn't always
work, as in the attached bug where the hotseat doesn't get focus at all
when the All Apps button is an obvious candidate for it.

By adding a specialized column in the focus matrix for the All Apps
button, we ensure that moving down to the hotseat stays within the
original column when possible, while also allowing the focus to switch
to the All Apps button if appropriate. Furthermore, we take care to skip
over the All Apps column when necessary in order to maintain all
previous functionality.

Bug: 25590522
Change-Id: I5d6a8ee69de8834314c4689246fe7d54329b2eef
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
0e2f3849b84f59ed7c1c4336ca01ac17f096e265 06-Nov-2015 Tony Wickham <twickham@google.com> Merge "Make sure user can always get to next page with keyboard." into ub-launcher3-burnaby-polish
c2964cb6cd87746dd1e44da90e62813ccb47cecf 05-Nov-2015 Tony Wickham <twickham@google.com> Make sure user can always get to next page with keyboard.

There's a case where hitting the left/right arrow in the first/last
column wouldn't give focus to an icon on the next page because it is
vertically too far from the first icon to be considered. This makes
for a bad user experience, because there is no way to switch pages
with the keyboard. So now we brute-force search for an appropriate
icon if none was found in this case.

Bug: 25434120
Change-Id: Ifdead0e3b458717ccb33e2f0ec7c15f1fcce4b95
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
25189851ace521c856faf7a9deacf1330b5bef92 05-Nov-2015 Tony Wickham <twickham@google.com> Stop explicitly snapping to page when navigating with keyboard.

When an icon grabs focus, it already snaps to its own page, so
the explicit snapToPage() is redundant. And in the case where no icon
will grab the focus, the explicit call puts us in a weird state
because the page snaps but the focus doesn't change (see bug).

(This happens, for instance, if you are moving from an icon on the
bottom right of page 1 and the only icon on page 2 is in the top
left. In this case, the second icon won't take focus because the
angle is too wide according to FocusLogic#handleDpadHorizontal().)

Bug: 25434120
Change-Id: I17b0ef7d86426a2599bc948bf2313dca7e112364
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
df315180f0653702b470beea62f27927e45fab4b 22-Oct-2015 Tony Wickham <twickham@google.com> Don't add cells to FocusLogic sparse matrix if they aren't focusable.

Previously, any child of ShortcutAndWidgetContainer was added to the
matrix, causing widgets (which aren't focusable) to be considered as
potential targets to gain focus when an arrow key was pressed. But if
the algorithm chose them, they couldn't take the focus so nothing
happened (i.e. the focus stayed on the app/folder it was on before).

Bug: 25126768
Change-Id: Id55fc310f7f58fb8795cce51dcefe4fd1210f788
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
c2bc0ef1c313698fd931fc84ec2f11882c38cdba 21-Oct-2015 Tony Wickham <twickham@google.com> Fix regression where keyboard couldn't switch between workspace pages.

Bug: 25122302
Change-Id: Id1d7628753ce7ef37af50e8594e541dcb6bea13e
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
2e6da1539bc7286336b3c24d96ab76434939ce4d 06-May-2015 Adam Cohen <adamcohen@google.com> Refactoring DeviceProfile

-> Pulling out the parts of device profile which can (and need to be)
initialized and accessed without access to an Activity context,
ie. the invariant bits.
-> The invariant bits are stored in InvariantDeviceProfile which is
initialized statically from LauncherAppState.
-> The DeviceProfile contains the Activity context-dependent bits,
and we will create one of these for each Activity instance, and
this instance is accessed through the Launcher activity.
-> It's possible that we can continue to refactor this such that
all appropriate dimensions can be computed without an Activity
context (by only specifying orientation). This would be an
extension of this CL and allow us to know exactly how launcher
will look in both orientations from any context.

Sets the stage for some improvements around b/19514688

Change-Id: Ia7daccf14d8ca2b9cb340b8780b684769e9f1892
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
fc3c1edf7bbc3f7cb23e79520731d13ccc2da046 10-Apr-2015 Sunny Goyal <sunnygoyal@google.com> Fixing folder focus logic

> Folder items no longer remain in a linear order when a folder
gets rearranged, and se we need to use createSparseMatrix instead
of createFullArray. Also because of this we need to use getChildAt(x, y)
instead of getChildAt(index)
> Removing traces of AppsCustomizePage (all apps) from FocusHelper

Change-Id: I9007f6b95cb823e27ef4a43ce725fda8ef1b7cf8
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
ada50984dc149c1f4337f965fbb59bdeaac8d09f 10-Apr-2015 Hyunyoung Song <hyunyoungs@google.com> Focus handling - RTL support

- Support LEFT and RIGHT keys to work across workspaces when in RTL mode.
- Folder icons navigate correctly on DPAD_LEFT/RIGHT events
- Folder navigation across pages also works correctly
- Deleted dead code inside FocusHelper

b/20120358

Change-Id: I7f851cb7ed31f666a91b2f856458d7966ea5f712
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
18bfaafd3da45dce7b5f73eaa1665f228353338c 17-Mar-2015 Hyunyoung Song <hyunyoungs@google.com> key event focus logic should support large tablets

TL;DR;; On smaller tablets, landscape = vertical hotseat bar, and
portrait = horizontal hotseat bar. However, in larger tablets, hotseat bar is
always horizontal. This is now correctly handled using DeviceProfile.isVerticalBar
method.

b/19732584

Change-Id: I1035c89b4685be12dbc863f8a1465047a5fec6a6
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
38531719636eba7c924e3e71c583ebce2c89a1d0 04-Mar-2015 Hyunyoung Song <hyunyoungs@google.com> [key event focus] DPAD navigates to the nearest item on next/previous page
b/19381790
b/16351792

TL;DR;; Previously, when RIGHT is handled on the right most column of the
current page or when LEFT is handled on the left most column, the next
icon of focus is next page 'first' icon or the previous page 'last icon'.
With this change, the row information is preserved when trying to locate
an icon to give focus in the next/previous page.

Next CL: long awaited unit tests that capture corner cases for different
orientation/ device configuration.

Change-Id: I5278bed45275b3e4cb39fb698df35f90bb45a415
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
31178b8237ccb6af666df60ef60c116c8afdf316 24-Feb-2015 Hyunyoung Song <hyunyoungs@google.com> [key event focus handling] (1)hotseat <-> icon now symmetric, (2)support DEL keycode

TL;DR; (1) Key event navigation from and to the hotseat and icons in the workspace
is now symmetric. Since there is one more icon in the hotseat, only left
N-1 icon navigation was symmetric.

(2) KeyEvent.KEYCODE_DEL and KeyEvent.KEYCODE_FORWARD_DEL can now delete icons
from the workspace. The focus move to the previous icon where the focus
traveled from.

Also contains minor styling and indexing issues.

Bug: 15408321
Bug: 19381790

Change-Id: I16cbcb2693e92eebb830997d01c0bf674073dd51
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java
ee3e6a7b777e58552a26ab8a10641886588e9196 20-Feb-2015 Hyunyoung Song <hyunyoungs@google.com> [key event focus handling] Cleanup/Refactor/Feature
1) Focus navigation handling is refactored to Focus utility class.
New 2 step dpad navigation algorithm is inside Focus class
2) Introduced a map (or matrix) that indicates where sparse icons are located inside a grid.
This enables getting rid of the icon sorting logic which was costly.
3) Unified all the dpad handling logic inside the handleXXKeyEvent methods
4) DOWN/UP key will allow navigation between workspace icons and the hotseat
5) Folder icons allow DOWN/UP to navigate to the title

b/19381790

Change-Id: Id45b3f215ef7c1ca5f99b08e3d721e219298627a
/packages/apps/Launcher3/src/com/android/launcher3/util/FocusLogic.java