Infinite scrolling kept a wrap state (target page, saved scroll bounds,
a cached feed flag) that every path out of a swipe had to tear down.
Paths that missed it caused the bugs: a short or backward swipe on the
last page wrapped anyway, the first page flashed when a layout pass
reset the bounds mid-wrap, touching during a wrap jumped to the target,
two-panel layouts got stuck between pages, and the page indicator lost
its active dot.
The wrap now follows from the scroll position alone: on an end that
wraps, the scroll may run one screen further, and the screen from the
other end is translated into that gap. Workspace decides which ends
wrap; other paged views behave as in AOSP.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit fixes the infinite scroll wrap animation so it scrolls one page in the correct swipe direction instead of animating through all intermediate pages.
* fix: Reimplement and only handle touch target on configured app
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
* feat: Promote to stable
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
* fix: Prevent app icons from conflicting with edit mode state
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
* fix: Address reviewer
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
* refactor: Make icon swipe settings enable by mandatory default
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
---------
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
Allow users to designate any workspace page as the default home page
via long-press popup menu. Pressing HOME navigates to the chosen page
instead of always page 0. Resets to page 0 if the default page is deleted.
Revert submission 33672643-DataDeviceProfile1
Reason for revert: Droidmonitor created revert due to b/419867875. Will be verifying through ABTD before submission.
Fix: 419867875
Reverted changes: /q/submissionid:33672643-DataDeviceProfile1
Change-Id: Icb66aefbbcee24e05806b2139923e1f2ea1c65e3
I was being cautios on my previous fix for this same
isse, cautios because I'm modifying an object by reference
That's why I was only updating the container when the icon being
dropped was PendingAddShortcutInfo but we can change the container
on every icon (we don't need to in the Widget case which is the
other if statement), we can be sure it is a safe operation because
we later update the info anyway rendering the previous info invalid.
Fix: 413784315
Test: WIP
Flag: EXEMPT bug fix
Change-Id: I60ecdb52be1c7bf0584cb1c74ee15b85961e5012
Instead of the dispatcher specifying the type, the UI checks th diff. This
ensures that the UI is updated correctly in all paths
Bug: 390572144
Flag: EXEMPT refactor
Test: Manually verified folder edit path where these callbacks were getting dispatched
Change-Id: Ib73eed5da87a847753a78453a48ab4fc495c1199
Folder and FolderIcon are UI objects and can talk to each other directly.
FolderInfo changes are already propogated via model callbacks, and doesn't need a separate listener pattern.
Bug: 398791288
Flag: EXEMPT bugfix
Test: atest FolderTest
Change-Id: Iefd47b8ea12a8ecaf34211a3d908220a0e999187
When we remove an in-between or last empty page, we manually set the
current page but don't update the description that's set on the
accessibility view. Due to which, when talkback focuses on it, it sees
the stale page count in the description.
This fix ensures to keep the state updated during removal.
Bug: 390360063
Fix: 390360063
Test: Talkback
Flag: EXEMPT BUGFIX
Change-Id: Idd9a54d3a1ee43e56f51db78e614776eca6a12f7
Rather than register a StateListener for each LauncherAppWidgetHostView, just register one StateListener which, upon launcher state is changed to NORMAL, iterate over all child views under Workspace and perform a11y action if view tag is set.
Fix: 397978703
Test: presubmit
Flag: EXEMPT bug fix
Change-Id: I044d012b74eaa5356196c5503318fa8ab389ec46