Skip to content

fix(prefs): show the work profile badge in app pickers - #44

Merged
denson9874 merged 1 commit into
codex/pixel-parityfrom
claude/work-badge-pickers
Nov 1, 2026
Merged

denson9874 merged 1 commit into
codex/pixel-parityfrom
claude/work-badge-pickers

Conversation

@denson9874

Copy link
Copy Markdown
Owner

Requested by Daryl

Description

Work, clone and private-space apps in the preference app pickers now show the same profile badge as Home and search. That covers Hidden apps, Dismissed predictions, the gesture "open app" picker, drawer-folder app selection and the folder-widget app picker. Before, the work copy of an app looked identical to the personal one. This is point 2 of Pratik's report (ISS-20261020-03).

Reasoning

  • App (AppsList.kt) kept appInfo.bitmap.icon, the bare bitmap. Launcher3 never bakes the badge into that bitmap: it lives in BitmapInfo.flags (FLAG_WORK and the others) and is drawn only by BitmapInfo.newIcon(), which returns a FastBitmapDrawable with a UserBadgeDrawable.
  • App.icon is now appInfo.bitmap.newIcon(context). AppItem draws it with accompanist's rememberDrawablePainter, which the project already uses.
  • newIcon().toBitmap() was avoided on purpose. Cached icons are hardware bitmaps, and copying them would hold roughly 150 KB per app.
  • The bitmap-based AppItem(label, Bitmap, …) overload still works; it now forwards to a new Painter overload, so SelectIconPreference is unchanged.
  • Personal rows look the same as before. Icons in these lists stay unthemed, as they are today, and paused work apps are not greyed (bitmap.newIcon, not ItemInfoWithIcon.newIcon).

The other points of the report are not in this PR:

  • Point 1 (search bar) is already fixed by 9def349.
  • Point 4 (Home vs drawer size at the same %) has no size-math bug on phones: on 4_by_6 both use a 65 dp base, so 90% is 58.5 dp in both places. It needs Pratik's device and a dumpsys.
  • Point 5 (folder icon sizes) has no folder-specific bug; it's most likely icon-pack normalisation or point 4.
  • Point 3 (custom folder icon) is a feature that needs Daryl's design decisions.

Testing

  • ./gradlew testLawnWithQuickstepExpressiveDebugUnitTest: 650/650 pass, and the Expressive debug variant compiles.
  • An independent check confirmed the patch applies to b7e190e, overload resolution is unambiguous, and no other code reads App.icon.
  • Not yet checked on a device. To verify on the next ExpressiveOS build: Settings > Hidden apps with a work profile set up; the work copies should show the briefcase badge.

Type of change

✅ Bug fix (A non-breaking change that fixes an issue)
❌ New feature (A non-breaking change that adds functionality)
❌ Breaking change (A fix or feature that would cause existing functionality to not work as expected)
❌ Refactor (A code change that neither fixes a bug nor adds a feature)
❌ Performance (A code change that improves performance)
❌ Style (Code style changes)
❌ Docs (Changes to documentation)
❌ Chore (Changes to the build process or other tooling)

🤖 Generated with Claude Code

Hidden apps, Dismissed predictions, the gesture app picker, drawer-folder
app selection and the folder-widget picker drew BitmapInfo.icon, the bare
icon. Launcher3 keeps the work/clone/private badge as a flag and only
draws it through BitmapInfo.newIcon(), so a work app looked identical to
the personal copy in those lists. App now keeps the badged drawable and
AppItem draws it with a drawable painter, which also avoids copying the
hardware bitmaps.

ISS-20261020-03 (point 2)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@denson9874 denson9874 self-assigned this Nov 1, 2026
@denson9874
denson9874 marked this pull request as ready for review November 1, 2026 01:39
@denson9874
denson9874 merged commit 8911efc into codex/pixel-parity Nov 1, 2026
6 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant