system settings
git clone https://git.lucas.co/cce-system-interface.git
fix: rebuild after a Tab focus step; the page target carries the ring's tint
The view pass runs on rebuild only, so the moved focus ring was not drawn;
raise the flag from Application::focus_stepped. The page's RenderTarget
gains inset_plate_tinted so a focused plate carved through the bridge keeps
its lit rim.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
src/app.rs | 3 +++
src/main.rs | 5 +++++
2 files changed, 8 insertions(+)
diff --git a/src/app.rs b/src/app.rs
index 083f9dd..c9fbc56 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -377,6 +377,9 @@ impl RenderTarget for PageContent {
self.control_relief_marks.push(self.rects.len());
self.control_reliefs.push(ControlCarve::Plate { x, y, w, h, radius, depth, color, tint: None });
}
+ fn inset_plate_tinted(&mut self, color: [f32; 4], x: f32, y: f32, w: f32, h: f32, radius: f32, depth: f32, tint: [f32; 3]) {
+ self.control_reliefs.push(ControlCarve::Plate { x, y, w, h, radius, depth, color, tint: Some(tint) });
+ }
/// The same bridge for the step carves — a DIFFERENT shape, not an inset
/// plate at another rect: a trough is a seam about the boundary with the
diff --git a/src/main.rs b/src/main.rs
index ec27101..f8843a5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -619,6 +619,11 @@ impl cce_ui::engine::Application for SystemInterface {
true
}
+ /// The geometry is cached until the next rebuild — a moved focus ring needs one.
+ fn focus_stepped(&mut self) {
+ self.needs_rebuild = true;
+ }
+
fn handle_key_input(&mut self, event: &cce_ui::widget::KeyEvent, needs_rebuild: &mut bool) -> Option<Self::Message> {
if self.handle_key_input_internal(event) {
*needs_rebuild = true;