Add handling to fully clear press visuals when focus returns or a launch transition ends. BubbleTextView now overrides onWindowFocusChanged to call a new clearPressedIconState() method, which clears framework pressed/stay-pressed state and resets the icon tap scale. Launcher was updated to call the new method reference instead of only clearing stay-pressed, ensuring icons match neighbors and covering ordering gaps when resume callbacks run before window focus is restored.
Clear touch/pressed background and reset icon scale when recycling BubbleTextView instances to prevent inconsistent icon sizes (e.g. in All Apps) — references issue #6575. Replace setScaleY(1) with setReorderBounceScale(1f) to restore the bounce scale, and call FastBitmapDrawable.resetScale() when assigning an icon so drawable-specific scale is cleared before setting bounds.
- Closes: #6575
Ensure scrim alpha/color and workspace/hotseat scale are reset when a folder is dismissed without running the close animation (e.g. launching an app). Adds restoreLauncherAfterFolderDismissed() and calls it during folder close to restore the ScrimView alpha/colors and set SCALE_PROPERTY to 1 on the workspace and hotseat. Also imports SCALE_PROPERTY and ScrimView.
Compute folder height from occupied rows and ensure scrim is correctly restored after close. Added CellLayout.getDesiredHeightForOccupiedRows and updated FolderPagedView.getDesiredHeight to use per-page occupied-row heights so folders don't leave empty space above the footer. Set footer translationY to 0 in FolderOpenCloseAnimationListener. Refactored FolderScrimAnimationListener to restore scrim via setScrimColors using the Launcher state (avoids lingering black dim layer) and pass Launcher into the listener. Added an ALL_APPS guard in FolderSpringAnimatorSet to avoid replacing the drawer scrim (fixes disappearing list background)
- Closes: #6551
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.
* Fix work profile unpause authentication prompt
Skip credential challenge when enabling/disabling work profile by passing null Intent parameter to requestQuietModeEnabled(). This prevents password/biometric prompts for secure folders when toggling work profile state.
- Use 3-parameter requestQuietModeEnabled() with null Intent on Android P+
- Fallback to 2-parameter version for older Android versions
- Resolves authentication prompt issue when unpausing work profile
* Fix work profile pause/unpause without authentication prompts
* Fix work profile state detection on initial load
Fixed bug where work profile quiet mode flag was not set correctly on initial app load when multiple user profiles exist. Changed direct assignment (=) to OR assignment (|=) to preserve quiet state across all work profiles.
This ensures FLAG_WORK_PROFILE_QUIET_MODE_ENABLED is set properly both on initial load (LoaderTask) and during runtime pause/unpause events (PackageUpdatedTask).
* Add work profile tab customization features
- Add workProfileTabBackgroundColor preference for selected tab color
- Add workProfileTabContainerBackground toggle for scroll protection
- Update DrawableTokens to use custom colors from preferences
- Add UI controls in App Drawer preferences
- Control tab background visibility on scroll
Features:
1. Custom color picker for selected work/personal tab button
2. Toggle to show/hide background protection when scrolling
* Fix work profile state detection bug
- Query UserManager.isQuietModeEnabled() directly for real-time state
- Call updateUserQuietMode() to keep cached state synchronized
- Fixes stale quiet mode state causing incorrect UI display
Root cause: LoaderTask was using cached UserManagerState values that
could become stale if work profile state changed between initialization
and app loading.
* Fix work profile unpause authentication prompt
Skip credential challenge when enabling/disabling work profile by passing null Intent parameter to requestQuietModeEnabled(). This prevents password/biometric prompts for secure folders when toggling work profile state.
- Use 3-parameter requestQuietModeEnabled() with null Intent on Android P+
- Fallback to 2-parameter version for older Android versions
- Resolves authentication prompt issue when unpausing work profile
* Fix work profile pause/unpause without authentication prompts
* Fix work profile state detection on initial load
Fixed bug where work profile quiet mode flag was not set correctly on initial app load when multiple user profiles exist. Changed direct assignment (=) to OR assignment (|=) to preserve quiet state across all work profiles.
This ensures FLAG_WORK_PROFILE_QUIET_MODE_ENABLED is set properly both on initial load (LoaderTask) and during runtime pause/unpause events (PackageUpdatedTask).
* Add work profile tab customization features
- Add workProfileTabBackgroundColor preference for selected tab color
- Add workProfileTabContainerBackground toggle for scroll protection
- Update DrawableTokens to use custom colors from preferences
- Add UI controls in App Drawer preferences
- Control tab background visibility on scroll
Features:
1. Custom color picker for selected work/personal tab button
2. Toggle to show/hide background protection when scrolling
* Fix work profile state detection bug
- Query UserManager.isQuietModeEnabled() directly for real-time state
- Call updateUserQuietMode() to keep cached state synchronized
- Fixes stale quiet mode state causing incorrect UI display
Root cause: LoaderTask was using cached UserManagerState values that
could become stale if work profile state changed between initialization
and app loading.
* Fix spotless formatting in DrawableTokens.kt
* fix: cleanup
---------
Co-authored-by: Ankit Kushwaha <ankkushwaha@microsoft.com>
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>