From d1645d068adb22306a1dc7332f924468ccdce6a6 Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Tue, 21 Jan 2025 16:06:19 +0800 Subject: [PATCH 01/15] feat: filetree support pageup and pagedown --- filetreelist/src/filetree.rs | 56 ++++++++++++++++++++++++++++++-- src/components/revision_files.rs | 5 +++ 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/filetreelist/src/filetree.rs b/filetreelist/src/filetree.rs index 023da8caf9..4ebdf541bf 100644 --- a/filetreelist/src/filetree.rs +++ b/filetreelist/src/filetree.rs @@ -2,7 +2,7 @@ use crate::{ error::Result, filetreeitems::FileTreeItems, tree_iter::TreeIterator, TreeItemInfo, }; -use std::{collections::BTreeSet, path::Path}; +use std::{cell::RefCell, collections::BTreeSet, path::Path}; /// #[derive(Copy, Clone, Debug)] @@ -30,6 +30,7 @@ pub struct FileTree { selection: Option, // caches the absolute selection translated to visual index visual_selection: Option, + pub show_height: RefCell>, } impl FileTree { @@ -42,6 +43,7 @@ impl FileTree { items: FileTreeItems::new(list, collapsed)?, selection: if list.is_empty() { None } else { Some(0) }, visual_selection: None, + show_height: None.into(), }; new_self.visual_selection = new_self.calc_visual_selection(); @@ -112,6 +114,49 @@ impl FileTree { } } + fn selection_page_updown( + &self, + current_index: usize, + up: bool, + ) -> Option { + let mut index = current_index; + + let mut count = 0; + loop { + index = { + let new_index = if up { + index.saturating_sub(1) + } else { + index.saturating_add(1) + }; + + if new_index == index { + break; + } + + if new_index >= self.items.len() { + break; + } + + new_index + }; + + if self.is_visible_index(index) { + count += 1; + } + + if count >= self.show_height.borrow().unwrap_or(0) { + break; + } + } + + if index == current_index { + None + } else { + Some(index) + } + } + /// pub fn move_selection(&mut self, dir: MoveSelection) -> bool { self.selection.is_some_and(|selection| { @@ -130,8 +175,13 @@ impl FileTree { Self::selection_start(selection) } MoveSelection::End => self.selection_end(selection), - MoveSelection::PageDown | MoveSelection::PageUp => { - None + MoveSelection::PageUp => { + Self::selection_page_updown(self, selection, true) + } + MoveSelection::PageDown => { + Self::selection_page_updown( + self, selection, false, + ) } }; diff --git a/src/components/revision_files.rs b/src/components/revision_files.rs index 8a56071684..eb4a89b2c5 100644 --- a/src/components/revision_files.rs +++ b/src/components/revision_files.rs @@ -275,6 +275,11 @@ impl RevisionFilesComponent { let tree_height = usize::from(area.height.saturating_sub(2)); let tree_width = usize::from(area.width); + self.tree + .show_height + .borrow_mut() + .replace(tree_height.saturating_sub(1)); + self.tree.visual_selection().map_or_else( || { self.scroll.reset(); From 12641c877b62f38609334401509a58e557ac2517 Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Tue, 21 Jan 2025 16:55:39 +0800 Subject: [PATCH 02/15] chore: update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05823362cf..143298d57f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +* Files tab support pageUp and pageDown + ## [0.27.0] - 2024-01-14 **new: manage remotes** From 2d80047300bb72cfc1d9837e9c4580a7ef344047 Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Wed, 22 Jan 2025 15:20:56 +0800 Subject: [PATCH 03/15] feat: status tab suppoer pageup and pagedown --- src/components/status_tree.rs | 10 +++++++ src/components/utils/statustree.rs | 43 +++++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/components/status_tree.rs b/src/components/status_tree.rs index 4fb762c1af..54749020b7 100644 --- a/src/components/status_tree.rs +++ b/src/components/status_tree.rs @@ -351,6 +351,7 @@ impl DrawableComponent for StatusTreeComponent { .map(|idx| idx.saturating_sub(selection_offset)) .unwrap_or_default(); let tree_height = r.height.saturating_sub(2) as usize; + self.tree.window_height.borrow_mut().replace(tree_height); self.scroll_top.set(ui::calc_scroll_top( self.scroll_top.get(), @@ -504,6 +505,15 @@ impl Component for StatusTreeComponent { || key_match(e, self.key_config.keys.shift_down) { Ok(self.move_selection(MoveSelection::End).into()) + } else if key_match(e, self.key_config.keys.page_up) { + Ok(self + .move_selection(MoveSelection::PageUp) + .into()) + } else if key_match(e, self.key_config.keys.page_down) + { + Ok(self + .move_selection(MoveSelection::PageDown) + .into()) } else if key_match(e, self.key_config.keys.move_left) { Ok(self diff --git a/src/components/utils/statustree.rs b/src/components/utils/statustree.rs index 2118ab0ed8..f83e5b9f9c 100644 --- a/src/components/utils/statustree.rs +++ b/src/components/utils/statustree.rs @@ -3,7 +3,7 @@ use super::filetree::{ }; use anyhow::Result; use asyncgit::StatusItem; -use std::{cmp, collections::BTreeSet}; +use std::{cell::RefCell, cmp, collections::BTreeSet}; //TODO: use new `filetreelist` crate @@ -16,6 +16,8 @@ pub struct StatusTree { // some folders may be folded up, this allows jumping // over folders which are folded into their parent pub available_selections: Vec, + + pub window_height: RefCell>, } /// @@ -27,6 +29,8 @@ pub enum MoveSelection { Right, Home, End, + PageDown, + PageUp, } #[derive(Copy, Clone, Debug)] @@ -143,6 +147,12 @@ impl StatusTree { } MoveSelection::Home => SelectionChange::new(0, false), MoveSelection::End => self.selection_end(), + MoveSelection::PageUp => { + self.selection_page_updown(selection, true) + } + MoveSelection::PageDown => { + self.selection_page_updown(selection, false) + } }; let changed_index = @@ -283,6 +293,37 @@ impl StatusTree { SelectionChange::new(new_index, false) } + fn selection_page_updown( + &self, + current_index: usize, + up: bool, + ) -> SelectionChange { + let mut new_index = current_index; + let mut count = 0; + + loop { + if up { + new_index = new_index.saturating_sub(1); + } else { + new_index = new_index.saturating_add(1); + } + + if self.is_visible_index(new_index) { + count += 1; + } + + if count == self.window_height.borrow().unwrap_or(0) { + break; + } + + if new_index == 0 || new_index == self.tree.len() - 1 { + break; + } + } + + SelectionChange::new(new_index, false) + } + fn is_visible_index(&self, idx: usize) -> bool { self.tree[idx].info.visible } From f9e9ffcae77797d5c25a91ca8498402ed1f3347f Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Mon, 10 Feb 2025 09:48:01 +0800 Subject: [PATCH 04/15] fix: use Cell replace RefCell --- .editorconfig | 2 ++ filetreelist/src/filetree.rs | 6 +++--- src/components/revision_files.rs | 3 +-- src/components/status_tree.rs | 2 +- src/components/utils/statustree.rs | 6 +++--- 5 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..3e3f23ae4a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,2 @@ +[*.rs] +indent_style = tab diff --git a/filetreelist/src/filetree.rs b/filetreelist/src/filetree.rs index 4ebdf541bf..097d1b6437 100644 --- a/filetreelist/src/filetree.rs +++ b/filetreelist/src/filetree.rs @@ -2,7 +2,7 @@ use crate::{ error::Result, filetreeitems::FileTreeItems, tree_iter::TreeIterator, TreeItemInfo, }; -use std::{cell::RefCell, collections::BTreeSet, path::Path}; +use std::{cell::Cell, collections::BTreeSet, path::Path}; /// #[derive(Copy, Clone, Debug)] @@ -30,7 +30,7 @@ pub struct FileTree { selection: Option, // caches the absolute selection translated to visual index visual_selection: Option, - pub show_height: RefCell>, + pub show_height: Cell>, } impl FileTree { @@ -145,7 +145,7 @@ impl FileTree { count += 1; } - if count >= self.show_height.borrow().unwrap_or(0) { + if count >= self.show_height.get().unwrap_or(0) { break; } } diff --git a/src/components/revision_files.rs b/src/components/revision_files.rs index eb4a89b2c5..ea1f0169e0 100644 --- a/src/components/revision_files.rs +++ b/src/components/revision_files.rs @@ -277,8 +277,7 @@ impl RevisionFilesComponent { self.tree .show_height - .borrow_mut() - .replace(tree_height.saturating_sub(1)); + .set(Some(tree_height.saturating_sub(1))); self.tree.visual_selection().map_or_else( || { diff --git a/src/components/status_tree.rs b/src/components/status_tree.rs index 54749020b7..1d5f39cb6f 100644 --- a/src/components/status_tree.rs +++ b/src/components/status_tree.rs @@ -351,7 +351,7 @@ impl DrawableComponent for StatusTreeComponent { .map(|idx| idx.saturating_sub(selection_offset)) .unwrap_or_default(); let tree_height = r.height.saturating_sub(2) as usize; - self.tree.window_height.borrow_mut().replace(tree_height); + self.tree.window_height.set(Some(tree_height)); self.scroll_top.set(ui::calc_scroll_top( self.scroll_top.get(), diff --git a/src/components/utils/statustree.rs b/src/components/utils/statustree.rs index f83e5b9f9c..d9f769dbbd 100644 --- a/src/components/utils/statustree.rs +++ b/src/components/utils/statustree.rs @@ -3,7 +3,7 @@ use super::filetree::{ }; use anyhow::Result; use asyncgit::StatusItem; -use std::{cell::RefCell, cmp, collections::BTreeSet}; +use std::{cell::Cell, cmp, collections::BTreeSet}; //TODO: use new `filetreelist` crate @@ -17,7 +17,7 @@ pub struct StatusTree { // over folders which are folded into their parent pub available_selections: Vec, - pub window_height: RefCell>, + pub window_height: Cell>, } /// @@ -312,7 +312,7 @@ impl StatusTree { count += 1; } - if count == self.window_height.borrow().unwrap_or(0) { + if count == self.window_height.get().unwrap_or(0) { break; } From a430b8e6c394f5d3fe4ebdf432aaac3b0e2f0229 Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Mon, 10 Feb 2025 10:04:07 +0800 Subject: [PATCH 05/15] test: add test for selection_page_updown --- filetreelist/src/filetree.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/filetreelist/src/filetree.rs b/filetreelist/src/filetree.rs index 097d1b6437..897860abd0 100644 --- a/filetreelist/src/filetree.rs +++ b/filetreelist/src/filetree.rs @@ -564,4 +564,36 @@ mod test { assert_eq!(s.count, 3); assert_eq!(s.index, 2); } + + #[test] + fn test_selection_page_updown() { + let items = vec![ + Path::new("a/b/c"), // + Path::new("a/b/c2"), // + Path::new("a/d"), // + Path::new("a/e"), // + ]; + + //0 a/ + //1 b/ + //2 c + //3 c2 + //4 d + //5 e + + let mut tree = + FileTree::new(&items, &BTreeSet::new()).unwrap(); + + tree.show_height.set(Some(2)); + + tree.selection = Some(0); + assert!(tree.move_selection(MoveSelection::PageDown)); + assert_eq!(tree.selection, Some(2)); + assert!(tree.move_selection(MoveSelection::PageDown)); + assert_eq!(tree.selection, Some(4)); + assert!(tree.move_selection(MoveSelection::PageUp)); + assert_eq!(tree.selection, Some(2)); + assert!(tree.move_selection(MoveSelection::PageUp)); + assert_eq!(tree.selection, Some(0)); + } } From 6a5c1b95c29e8f56729f59001886606ebdbf286a Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Mon, 10 Feb 2025 10:04:34 +0800 Subject: [PATCH 06/15] chore: format --- filetreelist/src/filetree.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/filetreelist/src/filetree.rs b/filetreelist/src/filetree.rs index 897860abd0..3808ea8f62 100644 --- a/filetreelist/src/filetree.rs +++ b/filetreelist/src/filetree.rs @@ -568,10 +568,10 @@ mod test { #[test] fn test_selection_page_updown() { let items = vec![ - Path::new("a/b/c"), // + Path::new("a/b/c"), // Path::new("a/b/c2"), // - Path::new("a/d"), // - Path::new("a/e"), // + Path::new("a/d"), // + Path::new("a/e"), // ]; //0 a/ @@ -580,7 +580,7 @@ mod test { //3 c2 //4 d //5 e - + let mut tree = FileTree::new(&items, &BTreeSet::new()).unwrap(); From bfaa873ee87112c0cacd62760925fc7d1dc6747f Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Mon, 10 Feb 2025 11:15:30 +0800 Subject: [PATCH 07/15] chore: update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b17f73286..7552d50b4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased ### Added -* Files and status tab support pageUp and pageDown +* Files and status tab support pageUp and pageDown [[@fatpandac](https://github.com/fatpandac)] ([#1951](https://github.com/extrawurst/gitui/issues/1951)) ### Changed * After commit: jump back to unstaged area [[@tommady](https://github.com/tommady)] ([#2476](https://github.com/extrawurst/gitui/issues/2476)) From ce5182df96b8816d6e187027958a705e030a3c65 Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Sun, 16 Mar 2025 11:57:45 +0800 Subject: [PATCH 08/15] chore: remove .editorconfig --- .editorconfig | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 3e3f23ae4a..0000000000 --- a/.editorconfig +++ /dev/null @@ -1,2 +0,0 @@ -[*.rs] -indent_style = tab From 0f338b8201d185f9afbea24cae9246c5f3080216 Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Thu, 27 Mar 2025 16:20:50 +0800 Subject: [PATCH 09/15] fix: the status tree page-down action overflows the tree length --- src/components/utils/statustree.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/components/utils/statustree.rs b/src/components/utils/statustree.rs index d9f769dbbd..bf03134a4e 100644 --- a/src/components/utils/statustree.rs +++ b/src/components/utils/statustree.rs @@ -308,17 +308,18 @@ impl StatusTree { new_index = new_index.saturating_add(1); } - if self.is_visible_index(new_index) { - count += 1; - } - if count == self.window_height.get().unwrap_or(0) { break; } - if new_index == 0 || new_index == self.tree.len() - 1 { + if new_index == 0 || new_index >= self.tree.len() - 1 { + new_index = cmp::min(new_index, self.tree.len() - 1); break; } + + if self.is_visible_index(new_index) { + count += 1; + } } SelectionChange::new(new_index, false) From 580929ff66e1469e4c62ca78528349946a8aa877 Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Fri, 28 Mar 2025 11:46:24 +0800 Subject: [PATCH 10/15] refactor: use a more reliable method to implement page up and down. --- src/components/utils/statustree.rs | 48 ++++++++++++------------------ 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/src/components/utils/statustree.rs b/src/components/utils/statustree.rs index bf03134a4e..f0c1435a3f 100644 --- a/src/components/utils/statustree.rs +++ b/src/components/utils/statustree.rs @@ -147,12 +147,15 @@ impl StatusTree { } MoveSelection::Home => SelectionChange::new(0, false), MoveSelection::End => self.selection_end(), - MoveSelection::PageUp => { - self.selection_page_updown(selection, true) - } - MoveSelection::PageDown => { - self.selection_page_updown(selection, false) - } + MoveSelection::PageUp => self.selection_page_updown( + selection, + (0..(selection + 1)).rev(), + ), + MoveSelection::PageDown => self + .selection_page_updown( + selection, + selection..(self.tree.len()), + ), }; let changed_index = @@ -296,31 +299,18 @@ impl StatusTree { fn selection_page_updown( &self, current_index: usize, - up: bool, + range: impl Iterator, ) -> SelectionChange { - let mut new_index = current_index; - let mut count = 0; + let page_size = self.window_height.get().unwrap_or(0); - loop { - if up { - new_index = new_index.saturating_sub(1); - } else { - new_index = new_index.saturating_add(1); - } - - if count == self.window_height.get().unwrap_or(0) { - break; - } - - if new_index == 0 || new_index >= self.tree.len() - 1 { - new_index = cmp::min(new_index, self.tree.len() - 1); - break; - } - - if self.is_visible_index(new_index) { - count += 1; - } - } + let new_index = range + .filter(|index| { + self.available_selections.contains(index) + && self.is_visible_index(*index) + }) + .take(page_size) + .last() + .unwrap_or(current_index); SelectionChange::new(new_index, false) } From f7adee63b274c50efeab5853ed134f9620167aae Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Fri, 28 Mar 2025 11:49:56 +0800 Subject: [PATCH 11/15] fix: CI err --- src/components/utils/statustree.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/utils/statustree.rs b/src/components/utils/statustree.rs index f0c1435a3f..32e6c22025 100644 --- a/src/components/utils/statustree.rs +++ b/src/components/utils/statustree.rs @@ -149,7 +149,7 @@ impl StatusTree { MoveSelection::End => self.selection_end(), MoveSelection::PageUp => self.selection_page_updown( selection, - (0..(selection + 1)).rev(), + (0..=selection).rev(), ), MoveSelection::PageDown => self .selection_page_updown( From 10b510b7ab44680ae446a397089c5e5a5921668d Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Sat, 29 Mar 2025 09:47:03 +0800 Subject: [PATCH 12/15] chore: rename show_height to window_height --- filetreelist/src/filetree.rs | 8 ++++---- src/components/revision_files.rs | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/filetreelist/src/filetree.rs b/filetreelist/src/filetree.rs index 3808ea8f62..695630d7e9 100644 --- a/filetreelist/src/filetree.rs +++ b/filetreelist/src/filetree.rs @@ -30,7 +30,7 @@ pub struct FileTree { selection: Option, // caches the absolute selection translated to visual index visual_selection: Option, - pub show_height: Cell>, + pub window_height: Cell>, } impl FileTree { @@ -43,7 +43,7 @@ impl FileTree { items: FileTreeItems::new(list, collapsed)?, selection: if list.is_empty() { None } else { Some(0) }, visual_selection: None, - show_height: None.into(), + window_height: None.into(), }; new_self.visual_selection = new_self.calc_visual_selection(); @@ -145,7 +145,7 @@ impl FileTree { count += 1; } - if count >= self.show_height.get().unwrap_or(0) { + if count >= self.window_height.get().unwrap_or(0) { break; } } @@ -584,7 +584,7 @@ mod test { let mut tree = FileTree::new(&items, &BTreeSet::new()).unwrap(); - tree.show_height.set(Some(2)); + tree.window_height.set(Some(2)); tree.selection = Some(0); assert!(tree.move_selection(MoveSelection::PageDown)); diff --git a/src/components/revision_files.rs b/src/components/revision_files.rs index ea1f0169e0..523a288488 100644 --- a/src/components/revision_files.rs +++ b/src/components/revision_files.rs @@ -276,7 +276,7 @@ impl RevisionFilesComponent { let tree_width = usize::from(area.width); self.tree - .show_height + .window_height .set(Some(tree_height.saturating_sub(1))); self.tree.visual_selection().map_or_else( From 62123cb6c640560ec38813aaf698f2ba1c0884c9 Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Sun, 30 Mar 2025 18:40:29 +0800 Subject: [PATCH 13/15] refactor: use a more reliable method to implement page up and down in filetreelist --- filetreelist/src/filetree.rs | 54 +++++++------------------------- src/components/revision_files.rs | 2 +- 2 files changed, 12 insertions(+), 44 deletions(-) diff --git a/filetreelist/src/filetree.rs b/filetreelist/src/filetree.rs index 695630d7e9..e0873050f8 100644 --- a/filetreelist/src/filetree.rs +++ b/filetreelist/src/filetree.rs @@ -116,45 +116,14 @@ impl FileTree { fn selection_page_updown( &self, - current_index: usize, - up: bool, + range: impl Iterator, ) -> Option { - let mut index = current_index; - - let mut count = 0; - loop { - index = { - let new_index = if up { - index.saturating_sub(1) - } else { - index.saturating_add(1) - }; - - if new_index == index { - break; - } - - if new_index >= self.items.len() { - break; - } - - new_index - }; - - if self.is_visible_index(index) { - count += 1; - } - - if count >= self.window_height.get().unwrap_or(0) { - break; - } - } + let page_size = self.window_height.get().unwrap_or(0); - if index == current_index { - None - } else { - Some(index) - } + range + .filter(|index| self.is_visible_index(*index)) + .take(page_size) + .last() } /// @@ -176,13 +145,12 @@ impl FileTree { } MoveSelection::End => self.selection_end(selection), MoveSelection::PageUp => { - Self::selection_page_updown(self, selection, true) - } - MoveSelection::PageDown => { - Self::selection_page_updown( - self, selection, false, - ) + self.selection_page_updown((0..=selection).rev()) } + MoveSelection::PageDown => self + .selection_page_updown( + selection..(self.items.len()), + ), }; let changed_index = diff --git a/src/components/revision_files.rs b/src/components/revision_files.rs index 523a288488..68e1cfda06 100644 --- a/src/components/revision_files.rs +++ b/src/components/revision_files.rs @@ -277,7 +277,7 @@ impl RevisionFilesComponent { self.tree .window_height - .set(Some(tree_height.saturating_sub(1))); + .set(Some(tree_height)); self.tree.visual_selection().map_or_else( || { From 485a38cce452d49cdac02a24fa99dc4819cb0540 Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Sun, 30 Mar 2025 18:46:10 +0800 Subject: [PATCH 14/15] chore: format --- src/components/revision_files.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/revision_files.rs b/src/components/revision_files.rs index 68e1cfda06..f3fec043d0 100644 --- a/src/components/revision_files.rs +++ b/src/components/revision_files.rs @@ -275,9 +275,7 @@ impl RevisionFilesComponent { let tree_height = usize::from(area.height.saturating_sub(2)); let tree_width = usize::from(area.width); - self.tree - .window_height - .set(Some(tree_height)); + self.tree.window_height.set(Some(tree_height)); self.tree.visual_selection().map_or_else( || { From 885c06b0ef6a1f1bba4ee0cb8cb8147539eb47b9 Mon Sep 17 00:00:00 2001 From: Fatpandac Date: Sun, 30 Mar 2025 19:00:10 +0800 Subject: [PATCH 15/15] test: test case failed --- filetreelist/src/filetree.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/filetreelist/src/filetree.rs b/filetreelist/src/filetree.rs index e0873050f8..7ffd5c01b9 100644 --- a/filetreelist/src/filetree.rs +++ b/filetreelist/src/filetree.rs @@ -552,7 +552,7 @@ mod test { let mut tree = FileTree::new(&items, &BTreeSet::new()).unwrap(); - tree.window_height.set(Some(2)); + tree.window_height.set(Some(3)); tree.selection = Some(0); assert!(tree.move_selection(MoveSelection::PageDown));