things-to-remember checklist
git clone https://git.lucas.co/cce-list.git
refactor(focus): drive focus through UiContext::focus_widget / unfocus_widget
A direct w.focus() / w.unfocus() left the window's record of focus (the Tab
walk, the accessibility tree) behind: on a widget that had let go, or beside
a newly focused one. The UiContext helpers do what the direct call did and
keep the record in step (cce-ui's global-state RFC, phase 2).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
src/main.rs | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/main.rs b/src/main.rs
index 797df6f..86bca48 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -352,7 +352,7 @@ impl ListApp {
fn begin_new_list(&mut self) {
self.set_mode(Mode::NamingList);
- self.input_box.focus();
+ self.ui_context.focus_widget(&mut self.input_box);
self.needs_rebuild = true;
}
@@ -391,7 +391,7 @@ impl ListApp {
return;
}
self.set_mode(Mode::ConfirmDelete);
- self.input_box.unfocus();
+ self.ui_context.unfocus_widget(&mut self.input_box);
self.needs_rebuild = true;
}
@@ -937,7 +937,7 @@ impl Application for ListApp {
}
}
if state == ElementState::Pressed && !self.input_box.hit_test(px, py, &self.ui_context) {
- self.input_box.unfocus();
+ self.ui_context.unfocus_widget(&mut self.input_box);
*needs_rebuild = true;
}
if self.ui_context.propagate_event(&ev, self.input_box.id()) {
@@ -993,7 +993,7 @@ impl Application for ListApp {
}
}
if let Key::Named(NamedKey::Escape) = event.logical_key {
- self.input_box.unfocus();
+ self.ui_context.unfocus_widget(&mut self.input_box);
if self.mode != Mode::Items {
self.set_mode(Mode::Items);
}