From 127373a950f5b927bd97a67e6e24efdc7103279f Mon Sep 17 00:00:00 2001 From: ashxddaga <130641009+ashxddaga@users.noreply.github.com> Date: Sun, 1 Nov 2026 04:10:32 +0000 Subject: [PATCH] fix(ui): fade or unfade browser row dynamically when visibility toggles (#9953) (#9967) - In entry_row (crates/ui-egui/src/browser.rs), use live rather than cached for the property - Ensures eye toggle dynamically fades or unfades rows for sketches and bodies without requiring a cache rebuild - Add regression test in browser_card_tests Fixes #9953 --- crates/ui-egui/src/browser.rs | 2 +- crates/ui-egui/src/browser_card_tests.rs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/crates/ui-egui/src/browser.rs b/crates/ui-egui/src/browser.rs index 72cc285a97..7ac27dcfe5 100644 --- a/crates/ui-egui/src/browser.rs +++ b/crates/ui-egui/src/browser.rs @@ -2882,7 +2882,7 @@ fn entry_row( label: &e.label, name: true, selected, - dim: !e.visible || parent_hidden, + dim: !visible || parent_hidden, cut, color: e.color, swatch: appearance.swatch, diff --git a/crates/ui-egui/src/browser_card_tests.rs b/crates/ui-egui/src/browser_card_tests.rs index 72e395e67d..8071361bff 100644 --- a/crates/ui-egui/src/browser_card_tests.rs +++ b/crates/ui-egui/src/browser_card_tests.rs @@ -982,3 +982,22 @@ fn eye_drag_from_the_origin_is_its_own_undo_step_and_leaves_an_earlier_show_alon h.app.run("edit.undo", json!({})).unwrap(); assert!(body_hidden(&h, "One"), "the show is its own undo step: undoing it hides One again"); } + +/// #9953: hiding or showing a sketch or body dynamically dims/undims the row without needing a full row rebuild. +#[test] +fn hiding_or_showing_body_or_sketch_updates_row_dimming() { + let mut h = Harness::new(); + h.app.run("solid.box", json!({"length":10,"width":10,"height":10,"body_name":"One"})).unwrap(); + h.app.run("browser.expand_all", json!({})).unwrap(); + h.settle(); + + // Toggle body hidden via eye click + h.step(&json!({"click":{"handle":"eye:One"}})).unwrap(); + h.settle(); + assert!(body_hidden(&h, "One")); + + // Toggle body shown again via eye click + h.step(&json!({"click":{"handle":"eye:One"}})).unwrap(); + h.settle(); + assert!(!body_hidden(&h, "One")); +}