file manager
git clone https://git.lucas.co/cce-files.git
fix: paginator dispatch via handle_event, not propagate (self-routing composite)
Same class as cce-layout-interface's fix: the Paginator's tree-registered
embedded strip made propagate's children-first descent consume its presses.
files' paginator sidebar is disabled (has_sidebar = false), so this is
parity, not an observable fix; the view-dropdown page switch is verified
live (Browse -> Network).
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_018u7qTwzX95dd5ysAkaSCLk
src/main.rs | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/main.rs b/src/main.rs
index 50a272a..0461e36 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1199,8 +1199,9 @@ impl Application for FilesystemApp {
}
if !self.select_mode {
- let ptr = self.paginator.as_ptr_mut();
- if self.ui_context.propagate_event(&mv, ptr) {
+ // Self-routing composite: handle_event, not propagate — the router's
+ // children-first descent would let the embedded strip consume this.
+ if self.paginator.handle_event(&mv, &mut self.ui_context) {
changed = true;
}
}
@@ -1461,8 +1462,8 @@ impl Application for FilesystemApp {
log::debug!("MOUSE INPUT: {:?} {:?} pos=({}, {})", button, state, pos.x, pos.y);
let ev = cce_ui::widget::Event::MouseButton { button, state, x: pos.x, y: pos.y, local_x: pos.x, local_y: pos.y };
let menu_match = !self.select_mode && {
- let ptr = self.paginator.as_ptr_mut();
- self.ui_context.propagate_event(&ev, ptr)
+ // Self-routing composite: handle_event, not propagate (see pointer move).
+ self.paginator.handle_event(&ev, &mut self.ui_context)
};
if menu_match {
if let Some((idx, _)) = self.paginator.menu_click() {