git.lucas.co / cce-system-interface
system settings
git clone https://git.lucas.co/cce-system-interface.git

commite038b176537c84eb857afc06d39aa7c40b0fa37c
parent75cd6f16b7
authorLucas Galante <[email protected]>
date2026-06-27 15:51
fix: Sync SystemInterface::scroll_y with Page::scroll_y on keyboard input

 src/input_handler.rs | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/input_handler.rs b/src/input_handler.rs
index 9e80d12..db73fc8 100644
--- a/src/input_handler.rs
+++ b/src/input_handler.rs
@@ -365,6 +365,9 @@ impl SystemInterface {
         let event_wrapper = cce_ui::widget::Event::KeyInput(event.clone());
         let mut key_handled = false;
         if let Some(root) = self.get_page_root_widget() {
+            let page_idx = Page::ALL.iter().position(|&p| p == self.app.current_page).unwrap_or(0);
+            let old_page_scroll = self.pages[page_idx].scroll_y;
+
             if self.ui_context.propagate_event(&event_wrapper, root) {
                 let mut actions = Vec::new();
                 self.propagate_widget_changes(&mut actions);
@@ -374,6 +377,13 @@ impl SystemInterface {
                 self.needs_rebuild = true;
                 key_handled = true;
             }
+
+            let new_page_scroll = self.pages[page_idx].scroll_y;
+            if (new_page_scroll - old_page_scroll).abs() > 0.01 {
+                self.scroll_y = new_page_scroll;
+                self.needs_rebuild = true;
+                key_handled = true;
+            }
         }
 
         if self.search_open {