graphic design tool
git clone https://git.lucas.co/cce-designer.git
fix(events): params pane gets its own press z-tier above the viewport
VIEWPORT_IDX and PARAM_IDX shared the -4 tier in the press hit-order
sort, so the stable sort's index tiebreak (viewport=3 < param=6) handed
every press over the floating params pane to the viewport underneath.
The pane's whole drag chain (drag_begin's re-press arming dragging_param,
drag_update, sync_parameters_to_project) was correctly wired and simply
never received the press — slider/Float3 held drags were dead, and only
the scrollbar (armed through a different path) worked.
PARAM_IDX now sorts at -3, above the viewport it floats over.
Viewport-only presses are unaffected: where the pane doesn't hit,
find() skips it exactly as before.
Live-verified via the HTTP API: a held drag on Position X moved Camera 1
from 2.50:1.80:2.50 to 10.00:1.80:2.50, tracking mid-drag.
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Fb2AGNKjfQZxfbxP43fVbC
src/app.rs | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/app.rs b/src/app.rs
index b1415b7..452784c 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -4771,8 +4771,13 @@ pub(crate) fn geometry_to_spreadsheet_data(geom: &Geometry) -> (Vec<String>, Vec
hit_order.sort_by_key(|&i| {
let z = if i == NETWORK_PANEL_IDX || i == PARAM_PLATE_IDX {
-5
- } else if i == VIEWPORT_IDX || i == PARAM_IDX {
+ } else if i == VIEWPORT_IDX {
+ // Below PARAM_IDX: the params pane floats over the viewport,
+ // and the old shared -4 tier let the stable sort's index order
+ // hand every press over the pane to the viewport instead.
-4
+ } else if i == PARAM_IDX {
+ -3
} else {
self.slots.get_dyn_mut(i).z_index()
};