The previous commit (7fafa379) moved fill-picker dismiss to the
very top of the press cascade, but that stole layer-context-menu
clicks (codex stop-gate). The commit before THAT (c3394fda) had it
late enough to be stolen by VariablesPanel.
Right answer: middle position (the original 0c0 spot, between
TopBar and VariablesPanel) — after the higher-z overlays (color
picker, layer-context-menu, agent-settings modal) so those keep
their own click handling when both happen to be open, but BEFORE
the rail walkers (VariablesPanel, PropertyPanel) so the picker
can't survive a click into them.
Cascade now reads:
pre rename / text-edit blur
pre agent-settings modal
0-c color picker overlay
pre layer context menu
0aa commit-on-blur for property inputs
0z panel resize gutter
0ab shape picker overlay
0a locale picker overlay
0b TopBar
0c0 **fill-type picker dismiss** ← settled position
0b1 VariablesPanel
0c PropertyPanel input + action
1+ chat, toolbar, canvas, …
The remaining edge case — TopBar / shape-picker / locale-picker
clicks while fill-picker is open consume the click without closing
fill — is pre-existing behavior. The cascade ordering between
those small overlays is a wider design question (last-opened wins
vs. priority list); not in scope for this commit.
press.rs: 839 → 840 (+1). 295 shell-core + 20 shell-native tests
pass.