From c6aecc08dcc1bbceff4c6335b97a7e6e6f41e79b Mon Sep 17 00:00:00 2001 From: bunnie Date: Fri, 24 Jun 2022 18:57:24 +0800 Subject: [PATCH] fix bug where entries don't redraw scrolling up/down to new page --- apps/vault/src/ux/framework.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/apps/vault/src/ux/framework.rs b/apps/vault/src/ux/framework.rs index 58cb3295c..0d6f19249 100644 --- a/apps/vault/src/ux/framework.rs +++ b/apps/vault/src/ux/framework.rs @@ -326,16 +326,24 @@ impl VaultUx { match dir { NavDir::Up => { if self.selection_index > 0 { + let starting_page = self.get_page(); self.mark_as_dirty(self.selection_index); self.selection_index -= 1; self.mark_as_dirty(self.selection_index); + if starting_page != self.get_page() { + self.mark_screen_as_dirty(self.selection_index); + } } } NavDir::Down => { if self.selection_index < self.filtered_list.len() { + let starting_page = self.get_page(); self.mark_as_dirty(self.selection_index); self.selection_index += 1; self.mark_as_dirty(self.selection_index); + if starting_page != self.get_page() { + self.mark_screen_as_dirty(self.selection_index); + } } } NavDir::PageUp => { @@ -368,6 +376,9 @@ impl VaultUx { self.filter(line); Ok(()) } + fn get_page(&self) -> i16 { + self.selection_index as i16 / self.items_per_screen + } fn clear_area(&mut self) { let items_height = self.items_per_screen * self.item_height; @@ -403,7 +414,7 @@ impl VaultUx { let mut dirty_tl: Option = None; let mut dirty_br: Option = None; - let page = self.selection_index as i16 / self.items_per_screen; + let page = self.get_page(); let list_len = self.filtered_list.len(); for item in self.filtered_list[ ((page as usize) * self.items_per_screen as usize).min(list_len) .. @@ -552,7 +563,7 @@ impl VaultUx { return Ok(()); } // ---- draw list body area ---- - let page = self.selection_index as i16 / self.items_per_screen; + let page = self.get_page(); let selected = self.selection_index as i16 % self.items_per_screen; let list_len = self.filtered_list.len(); for (index, item) in self.filtered_list[