Skip to content

feat: Desktop Launcher Polish#21

Merged
Charliechen114514 merged 3 commits into
mainfrom
feat/ms4-launcher-polish
Jul 3, 2026
Merged

feat: Desktop Launcher Polish#21
Charliechen114514 merged 3 commits into
mainfrom
feat/ms4-launcher-polish

Conversation

@Charliechen114514

Copy link
Copy Markdown
Member

No description provided.

MS4 closeout (interim animation approach):

- AppLauncher popup now fades (QGraphicsOpacityEffect) and slides up
  (QPropertyAnimation on pos) on open via a shared enter animation
  (250ms OutCubic), and reverses on close (150ms InCubic -> hide).
  Re-entry cancels any in-flight exit and vice-versa; the enter initial
  frame is seeded before show() so the popup never flashes opaque.
- Search box: QLineEdit -> QuarkWidgets TextField (Outlined variant).
  Drop-in: TextField extends QLineEdit, so the live-filter connect is
  unchanged (connected against the base &QLineEdit::textChanged explicitly,
  since TextField hides that name behind a protected helper).

The animation uses QPropertyAnimation rather than the QuarkWidgets MD3
engine (CFMaterialFade/SlideAnimation): the engine's MotionSpec integration
is unfinished today (calculateEasedProgress is linear, durations hardcoded),
so the eased QPropertyAnimation version is higher quality. A TODO in
setupAnimations marks the eventual switch once the engine is completed.

milestone_04 doc: header status + the section-7 TODO updated to reflect
this interim and the engine-switch prerequisite.

Verified: build green; app_discoverer_test 9/9, desktop_entry_index_test
7/7, builtin_panel_registry_test 5/5 pass; setupAnimations/applyAnimProgress
+ TextField symbols present in libCFDesktop_shared.so.
…gine

Replace the interim QPropertyAnimation fade/slide with the now-finished
QuarkWidgets MD3 engine: four motion-token-bound animations (enter/exit x
fade/slide) whose duration + easing resolve from the active theme's
IMotionSpec at start() -- shortEnter/mediumEnter for enter, shortExit/
mediumExit for exit. The enter pair starts before show() so the popup never
flashes opaque; exit_fade_::finished hides the widget once the fade-out
completes.

Bumps the QuarkWidgets submodule to the engine-finishing commit, which:
makes calculateEasedProgress non-linear, applies timing in the factory via
setMotionToken, and fixes the token-mapping double-prefix plus the bogus
qw::components::core forward decl that blocked including the engine from
desktop code. See the submodule commit for the full engine fix.

Engine caveats (pre-existing, do not block the normal open/close flow):
tick() ignores the Backward direction and stop() resets to m_from, so the
launcher uses Forward-only enter/exit pairs with reversed ranges and accepts
a possible minor glitch if the popup is dismissed during the ~250ms enter.

milestone_04 doc: animation section updated -- engine switch done; the
remaining caveat is the engine Backward/stop semantics (future work).

Verified: build green; app_discoverer_test 9/9, desktop_entry_index_test
7/7, builtin_panel_registry_test 5/5 pass; CFMaterialFade/SlideAnimation
symbols present in libCFDesktop_shared.so.
@Charliechen114514 Charliechen114514 merged commit 0a5c8ad into main Jul 3, 2026
6 checks passed
@Charliechen114514 Charliechen114514 deleted the feat/ms4-launcher-polish branch July 3, 2026 05:28
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