Update mod: Taskbar Blob Shape (1.1.1) - #5428
Conversation
A recent Windows 11 update changed the taskbar's visual tree, breaking the search blob and all system tray blobs (including the clock). All fixes are unions over the old and new trees, so older builds keep working unchanged: - SystemTrayFrameGrid is now a StackPanel (was a Grid), so the Grid cast failed and the tray was never swept. All host types are generalized from Grid to Panel; hosting in a StackPanel needs no further changes, since the blob's negative margins zero its layout size and the position expression cancels self.Offset. - SearchUx.SearchUI.SearchIconButton's name gained a generated suffix (e.g. SearchIcon_2605), so the name match found nothing. The sweep now matches the inner search button by class. - Button panel contents are wrapped in an extra Grid, moving the visual state groups off the button's first child. State detection and the event-attach fallback now walk first children (bounded) until a node actually carries groups. - TaskListLabeledButtonPanel#IconPanel becoming Grid#IconPanel needed no change: IconPanel was always resolved by name, not class.
|
Thanks for the pull request! This repository uses a two-stage review: an AI review that you run yourself, followed by a human review. To get started, comment See the pull request review process for the full details. |
|
/ai-review |
Submission reviewNote: This review was done by Claude. Due to the amount of submissions, doing a fully manual review for each pull request is no longer feasible. Thank you for understanding. Remember: The AI reviewer can be wrong - it may misread code, flag correct code as broken, or suggest changes that make things worse. Treat its findings as suggestions to verify, not instructions to follow blindly. You're responsible for the code you submit, so if a finding doesn't hold up, say so instead of changing working code to satisfy it. Please address the following issues. The items in the collapsed sections are optional, so it's your call whether to address them. No blocking issues — this looks good to merge. Each of the three changes is a strict superset of the previous matching ( Optional improvements
Minor polish — none of this affects users, so it's your call.
Functionality notes
Non-critical observations and ideas about the feature behavior itself.
Next steps:
See the review process for details. |
|
/ready-for-reviewer |
|
This pull request was converted to a draft, so it left the human review queue and is back to waiting-for-author. Mark it as ready for review and comment |
Taskbar Blob Shape 1.1.1 — compatibility with newer Windows 11 builds
A recent Windows 11 update changed the taskbar's visual tree, which broke the search blob and all system tray blobs (date/time, control center, language, chevron) on updated systems. This release adapts to the new tree while keeping the previous one working — every fix is a union over both layouts, with no behavior changes on older builds.
Root causes and fixes
SystemTrayFrameGridis now aStackPanel(previously aGrid), so thetry_as<Grid>cast returned null and the tray was never swept — no tray entry ever existed. All host-typed surfaces (entry/host records, root resolution, insertion, expression binding, sweeps) are generalized fromGridtoPanel, which covers both. Hosting in a StackPanel requires nothing further by construction: the blob's negative margins zero its layout size (it cannot displace stacked siblings), and the position expression's- self.Offsetterms cancel whatever slot the panel assigns.SearchUx.SearchUI.SearchIconButton's name gained a generated suffix on newer builds (e.g.SearchIcon_2605), so the name lookup found nothing. The sweep now matches it by class, which is stable across builds.Taskbar.TaskListButtonPanelandSearchUx.SearchUI.SearchButtonRootGridin an extraGrid, moving the visual state groups off the button's first child. Checked-state detection and the event-attach fallback now walk first children (bounded to 3 hops) until a node actually carries state groups — on older builds this resolves to the first child immediately, as before.Taskbar.TaskListLabeledButtonPanel#IconPanelbecomingGrid#IconPanelrequired no change:IconPanelwas always resolved by name, never by class.Tested
Changelog
SystemTrayFrameGridbecame a StackPanel), the search icon button is matched by class (its name gained a generated suffix), and visual-state detection tolerates the new wrapper Grid inside the button panels. No behavior changes on older builds.