system settings
git clone https://git.lucas.co/cce-system-interface.git
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 {