polish(p15): mute panel, revert scroll to knob, waveform icon + strong toggle state
Mute --deepdrft-panel-ground; WAVE scroll MudSlider back to RadialKnob; new DDIcons Waveform/WaveformFilled glyph for the waveform toggle; strong green ON-state chip vs dim OFF; refresh popover pointer-capture comment.
This commit is contained in:
@@ -15,13 +15,15 @@
|
||||
mild modal tint (alpha from the single --deepdrft-modal-scrim-alpha token, §10.5). There is therefore
|
||||
no AnchorOrigin/TransformOrigin: a centered modal has no anchor (Phase 15 drops those parameters).
|
||||
|
||||
KNOB-DRAG SAFETY (Phase 15 §4, highest-risk detail): RadialKnob mounts its own full-viewport
|
||||
position:fixed; z-index:9999 mouse-capture div WHILE dragging (RadialKnob.razor lines 5–9). That capture
|
||||
div sits ABOVE the overlay scrim, so a knob drag's pointer-up lands on the capture div, never the scrim
|
||||
— the overlay's OnClick does not fire mid-drag, so releasing the mouse outside the panel does NOT close
|
||||
the modal. AutoClose is left OFF (the default) and dismissal is via the explicit scrim OnClick only,
|
||||
carrying the SharePopover idiom forward under the new primitive. The panel stops click propagation so a
|
||||
click INSIDE it never bubbles to the scrim's close handler.
|
||||
KNOB-DRAG SAFETY (Phase 15 §4, highest-risk detail): RadialKnob calls setPointerCapture on its own
|
||||
knob element when a drag begins, so all pointermove/pointerup/pointercancel events for that pointer are
|
||||
delivered to the knob element regardless of where the cursor moves. The synthesised click on pointerup
|
||||
is also retargeted to the knob, not to whatever element is under the cursor — so releasing outside the
|
||||
panel never fires the scrim's close handler. The full-viewport position:fixed; z-index:9999 div
|
||||
RadialKnob renders while dragging is a belt-and-suspenders UX guard (blocks stray clicks on underlying
|
||||
content) but is no longer the load-bearing anti-dismiss mechanism. AutoClose is left OFF (the default)
|
||||
and dismissal is via the explicit scrim OnClick only. The panel stops click propagation so a click
|
||||
INSIDE it never bubbles to the scrim's close handler.
|
||||
|
||||
The host owns NO control state and NO JS interop. The hosted WaveformVisualizerControls panel mutates
|
||||
the shared WaveformVisualizerControlState and raises Changed; the visualizer bridge subscribes. This
|
||||
|
||||
Reference in New Issue
Block a user