feat(navigation): add action to scroll results list by a page (#72)

This commit is contained in:
Alexandre Pasmantier 2024-11-24 16:54:35 +01:00 committed by GitHub
parent 790c870ff3
commit 6d3965152e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 132 additions and 72 deletions

View File

@ -45,6 +45,8 @@ quit = "esc"
# Scrolling through entries # Scrolling through entries
select_next_entry = "down" select_next_entry = "down"
select_prev_entry = "up" select_prev_entry = "up"
select_next_page = "pagedown"
select_prev_page = "pageup"
# Scrolling the preview pane # Scrolling the preview pane
scroll_preview_half_page_down = "ctrl-d" scroll_preview_half_page_down = "ctrl-d"
scroll_preview_half_page_up = "ctrl-u" scroll_preview_half_page_up = "ctrl-u"
@ -68,6 +70,8 @@ quit = "esc"
# Scrolling through entries # Scrolling through entries
select_next_entry = "down" select_next_entry = "down"
select_prev_entry = "up" select_prev_entry = "up"
select_next_page = "pagedown"
select_prev_page = "pageup"
# Select an entry # Select an entry
select_entry = "enter" select_entry = "enter"
# Toggle the remote control mode # Toggle the remote control mode
@ -84,6 +88,8 @@ quit = "esc"
# Scrolling through entries # Scrolling through entries
select_next_entry = "down" select_next_entry = "down"
select_prev_entry = "up" select_prev_entry = "up"
select_next_page = "pagedown"
select_prev_page = "pageup"
# Select an entry # Select an entry
select_entry = "enter" select_entry = "enter"
# Toggle the send to channel mode # Toggle the send to channel mode

122
Cargo.lock generated
View File

@ -194,7 +194,7 @@ dependencies = [
"serde", "serde",
"serde_yaml", "serde_yaml",
"syntect", "syntect",
"thiserror", "thiserror 1.0.69",
"unicode-width 0.1.14", "unicode-width 0.1.14",
] ]
@ -287,7 +287,7 @@ dependencies = [
"polling", "polling",
"rustix", "rustix",
"slab", "slab",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -331,7 +331,7 @@ dependencies = [
"semver", "semver",
"serde", "serde",
"serde_json", "serde_json",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -893,7 +893,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7199d965852c3bac31f779ef99cbb4537f80e952e2d6aa0ffeb30cce00f4f46e" checksum = "7199d965852c3bac31f779ef99cbb4537f80e952e2d6aa0ffeb30cce00f4f46e"
dependencies = [ dependencies = [
"libc", "libc",
"thiserror", "thiserror 1.0.69",
"winapi", "winapi",
] ]
@ -1025,7 +1025,7 @@ dependencies = [
"parking_lot", "parking_lot",
"signal-hook", "signal-hook",
"smallvec", "smallvec",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -1038,26 +1038,26 @@ dependencies = [
"gix-date", "gix-date",
"gix-utils", "gix-utils",
"itoa", "itoa",
"thiserror", "thiserror 1.0.69",
"winnow", "winnow",
] ]
[[package]] [[package]]
name = "gix-bitmap" name = "gix-bitmap"
version = "0.2.12" version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10f78312288bd02052be5dbc2ecbc342c9f4eb791986d86c0a5c06b92dc72efa" checksum = "d48b897b4bbc881aea994b4a5bbb340a04979d7be9089791304e04a9fbc66b53"
dependencies = [ dependencies = [
"thiserror", "thiserror 2.0.3",
] ]
[[package]] [[package]]
name = "gix-chunk" name = "gix-chunk"
version = "0.4.9" version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c28b58ba04f0c004722344390af9dbc85888fbb84be1981afb934da4114d4cf" checksum = "c6ffbeb3a5c0b8b84c3fe4133a6f8c82fa962f4caefe8d0762eced025d3eb4f7"
dependencies = [ dependencies = [
"thiserror", "thiserror 2.0.3",
] ]
[[package]] [[package]]
@ -1071,7 +1071,7 @@ dependencies = [
"gix-features", "gix-features",
"gix-hash", "gix-hash",
"memmap2", "memmap2",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -1090,34 +1090,34 @@ dependencies = [
"memchr", "memchr",
"once_cell", "once_cell",
"smallvec", "smallvec",
"thiserror", "thiserror 1.0.69",
"unicode-bom", "unicode-bom",
"winnow", "winnow",
] ]
[[package]] [[package]]
name = "gix-config-value" name = "gix-config-value"
version = "0.14.9" version = "0.14.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3de3fdca9c75fa4b83a76583d265fa49b1de6b088ebcd210749c24ceeb74660" checksum = "49aaeef5d98390a3bcf9dbc6440b520b793d1bf3ed99317dc407b02be995b28e"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"bstr", "bstr",
"gix-path", "gix-path",
"libc", "libc",
"thiserror", "thiserror 2.0.3",
] ]
[[package]] [[package]]
name = "gix-date" name = "gix-date"
version = "0.9.1" version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d10d543ac13c97292a15e8e8b7889cd006faf739777437ed95362504b8fe81a0" checksum = "691142b1a34d18e8ed6e6114bc1a2736516c5ad60ef3aa9bd1b694886e3ca92d"
dependencies = [ dependencies = [
"bstr", "bstr",
"itoa", "itoa",
"jiff", "jiff",
"thiserror", "thiserror 2.0.3",
] ]
[[package]] [[package]]
@ -1129,7 +1129,7 @@ dependencies = [
"bstr", "bstr",
"gix-hash", "gix-hash",
"gix-object", "gix-object",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -1145,7 +1145,7 @@ dependencies = [
"gix-path", "gix-path",
"gix-ref", "gix-ref",
"gix-sec", "gix-sec",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -1163,7 +1163,7 @@ dependencies = [
"once_cell", "once_cell",
"prodash", "prodash",
"sha1_smol", "sha1_smol",
"thiserror", "thiserror 1.0.69",
"walkdir", "walkdir",
] ]
@ -1197,7 +1197,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e" checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e"
dependencies = [ dependencies = [
"faster-hex", "faster-hex",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -1236,7 +1236,7 @@ dependencies = [
"memmap2", "memmap2",
"rustix", "rustix",
"smallvec", "smallvec",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -1247,7 +1247,7 @@ checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d"
dependencies = [ dependencies = [
"gix-tempfile", "gix-tempfile",
"gix-utils", "gix-utils",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -1265,7 +1265,7 @@ dependencies = [
"gix-validate", "gix-validate",
"itoa", "itoa",
"smallvec", "smallvec",
"thiserror", "thiserror 1.0.69",
"winnow", "winnow",
] ]
@ -1286,7 +1286,7 @@ dependencies = [
"gix-quote", "gix-quote",
"parking_lot", "parking_lot",
"tempfile", "tempfile",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -1304,31 +1304,31 @@ dependencies = [
"gix-path", "gix-path",
"memmap2", "memmap2",
"smallvec", "smallvec",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
name = "gix-path" name = "gix-path"
version = "0.10.12" version = "0.10.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c04e5a94fdb56b1e91eb7df2658ad16832428b8eeda24ff1a0f0288de2bce554" checksum = "afc292ef1a51e340aeb0e720800338c805975724c1dfbd243185452efd8645b7"
dependencies = [ dependencies = [
"bstr", "bstr",
"gix-trace", "gix-trace",
"home", "home",
"once_cell", "once_cell",
"thiserror", "thiserror 2.0.3",
] ]
[[package]] [[package]]
name = "gix-quote" name = "gix-quote"
version = "0.4.13" version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f89f9a1525dcfd9639e282ea939f5ab0d09d93cf2b90c1fc6104f1b9582a8e49" checksum = "64a1e282216ec2ab2816cd57e6ed88f8009e634aec47562883c05ac8a7009a63"
dependencies = [ dependencies = [
"bstr", "bstr",
"gix-utils", "gix-utils",
"thiserror", "thiserror 2.0.3",
] ]
[[package]] [[package]]
@ -1348,7 +1348,7 @@ dependencies = [
"gix-utils", "gix-utils",
"gix-validate", "gix-validate",
"memmap2", "memmap2",
"thiserror", "thiserror 1.0.69",
"winnow", "winnow",
] ]
@ -1363,7 +1363,7 @@ dependencies = [
"gix-revision", "gix-revision",
"gix-validate", "gix-validate",
"smallvec", "smallvec",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -1379,7 +1379,7 @@ dependencies = [
"gix-object", "gix-object",
"gix-revwalk", "gix-revwalk",
"gix-trace", "gix-trace",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -1394,14 +1394,14 @@ dependencies = [
"gix-hashtable", "gix-hashtable",
"gix-object", "gix-object",
"smallvec", "smallvec",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
name = "gix-sec" name = "gix-sec"
version = "0.10.9" version = "0.10.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2007538eda296445c07949cf04f4a767307d887184d6b3e83e2d636533ddc6e" checksum = "a8b876ef997a955397809a2ec398d6a45b7a55b4918f2446344330f778d14fd6"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"gix-path", "gix-path",
@ -1444,7 +1444,7 @@ dependencies = [
"gix-object", "gix-object",
"gix-revwalk", "gix-revwalk",
"smallvec", "smallvec",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -1457,7 +1457,7 @@ dependencies = [
"gix-features", "gix-features",
"gix-path", "gix-path",
"home", "home",
"thiserror", "thiserror 1.0.69",
"url", "url",
] ]
@ -1473,12 +1473,12 @@ dependencies = [
[[package]] [[package]]
name = "gix-validate" name = "gix-validate"
version = "0.9.1" version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e187b263461bc36cea17650141567753bc6207d036cedd1de6e81a52f277ff68" checksum = "cd520d09f9f585b34b32aba1d0b36ada89ab7fefb54a8ca3fe37fc482a750937"
dependencies = [ dependencies = [
"bstr", "bstr",
"thiserror", "thiserror 2.0.3",
] ]
[[package]] [[package]]
@ -2200,7 +2200,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442"
dependencies = [ dependencies = [
"memchr", "memchr",
"thiserror", "thiserror 1.0.69",
"ucd-trie", "ucd-trie",
] ]
@ -2395,7 +2395,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
dependencies = [ dependencies = [
"getrandom", "getrandom",
"libredox", "libredox",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@ -2688,7 +2688,7 @@ dependencies = [
"log", "log",
"memmap2", "memmap2",
"rustix", "rustix",
"thiserror", "thiserror 1.0.69",
"wayland-backend", "wayland-backend",
"wayland-client", "wayland-client",
"wayland-csd-frame", "wayland-csd-frame",
@ -2805,7 +2805,7 @@ dependencies = [
"serde", "serde",
"serde_derive", "serde_derive",
"serde_json", "serde_json",
"thiserror", "thiserror 1.0.69",
"walkdir", "walkdir",
"yaml-rust", "yaml-rust",
] ]
@ -2932,7 +2932,16 @@ version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [ dependencies = [
"thiserror-impl", "thiserror-impl 1.0.69",
]
[[package]]
name = "thiserror"
version = "2.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa"
dependencies = [
"thiserror-impl 2.0.3",
] ]
[[package]] [[package]]
@ -2946,6 +2955,17 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "thiserror-impl"
version = "2.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "thread_local" name = "thread_local"
version = "1.1.8" version = "1.1.8"

View File

@ -52,6 +52,12 @@ pub enum Action {
/// Select the previous entry in the currently focused list. /// Select the previous entry in the currently focused list.
#[serde(alias = "select_prev_entry")] #[serde(alias = "select_prev_entry")]
SelectPrevEntry, SelectPrevEntry,
/// Select the next page of entries in the currently focused list.
#[serde(alias = "select_next_page")]
SelectNextPage,
/// Select the previous page of entries in the currently focused list.
#[serde(alias = "select_prev_page")]
SelectPrevPage,
/// Copy the currently selected entry to the clipboard. /// Copy the currently selected entry to the clipboard.
#[serde(alias = "copy_entry_to_clipboard")] #[serde(alias = "copy_entry_to_clipboard")]
CopyEntryToClipboard, CopyEntryToClipboard,

View File

@ -62,19 +62,37 @@ impl Picker {
self.relative_state.select(index); self.relative_state.select(index);
} }
pub(crate) fn select_next(&mut self, total_items: usize, height: usize) { pub(crate) fn select_next(
&mut self,
step: u32,
total_items: usize,
height: usize,
) {
if self.inverted { if self.inverted {
self._select_prev(total_items, height); for _ in 0..step {
self._select_prev(total_items, height);
}
} else { } else {
self._select_next(total_items, height); for _ in 0..step {
self._select_next(total_items, height);
}
} }
} }
pub(crate) fn select_prev(&mut self, total_items: usize, height: usize) { pub(crate) fn select_prev(
&mut self,
step: u32,
total_items: usize,
height: usize,
) {
if self.inverted { if self.inverted {
self._select_next(total_items, height); for _ in 0..step {
self._select_next(total_items, height);
}
} else { } else {
self._select_prev(total_items, height); for _ in 0..step {
self._select_prev(total_items, height);
}
} }
} }
@ -112,7 +130,7 @@ mod tests {
let mut picker = Picker::default(); let mut picker = Picker::default();
picker.select(Some(0)); picker.select(Some(0));
picker.relative_select(Some(0)); picker.relative_select(Some(0));
picker.select_next(4, 2); picker.select_next(1, 4, 2);
assert_eq!(picker.selected(), Some(1), "selected"); assert_eq!(picker.selected(), Some(1), "selected");
assert_eq!(picker.relative_selected(), Some(1), "relative_selected"); assert_eq!(picker.relative_selected(), Some(1), "relative_selected");
} }
@ -126,7 +144,7 @@ mod tests {
let mut picker = Picker::default(); let mut picker = Picker::default();
picker.select(Some(1)); picker.select(Some(1));
picker.relative_select(Some(1)); picker.relative_select(Some(1));
picker.select_next(4, 2); picker.select_next(1, 4, 2);
assert_eq!(picker.selected(), Some(2), "selected"); assert_eq!(picker.selected(), Some(2), "selected");
assert_eq!(picker.relative_selected(), Some(2), "relative_selected"); assert_eq!(picker.relative_selected(), Some(2), "relative_selected");
} }
@ -140,7 +158,7 @@ mod tests {
let mut picker = Picker::default(); let mut picker = Picker::default();
picker.select(Some(2)); picker.select(Some(2));
picker.relative_select(Some(2)); picker.relative_select(Some(2));
picker.select_next(4, 2); picker.select_next(1, 4, 2);
assert_eq!(picker.selected(), Some(3), "selected"); assert_eq!(picker.selected(), Some(3), "selected");
assert_eq!(picker.relative_selected(), Some(2), "relative_selected"); assert_eq!(picker.relative_selected(), Some(2), "relative_selected");
} }
@ -154,7 +172,7 @@ mod tests {
let mut picker = Picker::default(); let mut picker = Picker::default();
picker.select(Some(3)); picker.select(Some(3));
picker.relative_select(Some(2)); picker.relative_select(Some(2));
picker.select_next(4, 2); picker.select_next(1, 4, 2);
assert_eq!(picker.selected(), Some(0), "selected"); assert_eq!(picker.selected(), Some(0), "selected");
assert_eq!(picker.relative_selected(), Some(0), "relative_selected"); assert_eq!(picker.relative_selected(), Some(0), "relative_selected");
} }
@ -168,7 +186,7 @@ mod tests {
let mut picker = Picker::default(); let mut picker = Picker::default();
picker.select(Some(2)); picker.select(Some(2));
picker.relative_select(Some(2)); picker.relative_select(Some(2));
picker.select_next(3, 2); picker.select_next(1, 3, 2);
assert_eq!(picker.selected(), Some(0), "selected"); assert_eq!(picker.selected(), Some(0), "selected");
assert_eq!(picker.relative_selected(), Some(0), "relative_selected"); assert_eq!(picker.relative_selected(), Some(0), "relative_selected");
} }
@ -182,7 +200,7 @@ mod tests {
let mut picker = Picker::default(); let mut picker = Picker::default();
picker.select(Some(1)); picker.select(Some(1));
picker.relative_select(Some(1)); picker.relative_select(Some(1));
picker.select_prev(4, 2); picker.select_prev(1, 4, 2);
assert_eq!(picker.selected(), Some(0), "selected"); assert_eq!(picker.selected(), Some(0), "selected");
assert_eq!(picker.relative_selected(), Some(0), "relative_selected"); assert_eq!(picker.relative_selected(), Some(0), "relative_selected");
} }
@ -196,7 +214,7 @@ mod tests {
let mut picker = Picker::default(); let mut picker = Picker::default();
picker.select(Some(0)); picker.select(Some(0));
picker.relative_select(Some(0)); picker.relative_select(Some(0));
picker.select_prev(4, 2); picker.select_prev(1, 4, 2);
assert_eq!(picker.selected(), Some(3), "selected"); assert_eq!(picker.selected(), Some(3), "selected");
assert_eq!(picker.relative_selected(), Some(2), "relative_selected"); assert_eq!(picker.relative_selected(), Some(2), "relative_selected");
} }
@ -210,7 +228,7 @@ mod tests {
let mut picker = Picker::default(); let mut picker = Picker::default();
picker.select(Some(3)); picker.select(Some(3));
picker.relative_select(Some(2)); picker.relative_select(Some(2));
picker.select_prev(4, 2); picker.select_prev(1, 4, 2);
assert_eq!(picker.selected(), Some(2), "selected"); assert_eq!(picker.selected(), Some(2), "selected");
assert_eq!(picker.relative_selected(), Some(1), "relative_selected"); assert_eq!(picker.relative_selected(), Some(1), "relative_selected");
} }
@ -224,7 +242,7 @@ mod tests {
let mut picker = Picker::default(); let mut picker = Picker::default();
picker.select(Some(2)); picker.select(Some(2));
picker.relative_select(Some(2)); picker.relative_select(Some(2));
picker.select_prev(4, 2); picker.select_prev(1, 4, 2);
assert_eq!(picker.selected(), Some(1), "selected"); assert_eq!(picker.selected(), Some(1), "selected");
assert_eq!(picker.relative_selected(), Some(1), "relative_selected"); assert_eq!(picker.relative_selected(), Some(1), "relative_selected");
} }
@ -256,9 +274,9 @@ mod tests {
let mut picker = Picker::default(); let mut picker = Picker::default();
picker.select(Some(0)); picker.select(Some(0));
picker.relative_select(Some(0)); picker.relative_select(Some(0));
picker.select_next(4, 2); picker.select_next(1, 4, 2);
picker = picker.inverted(); picker = picker.inverted();
picker.select_next(4, 2); picker.select_next(1, 4, 2);
assert!(picker.inverted, "inverted"); assert!(picker.inverted, "inverted");
assert_eq!(picker.selected(), Some(0), "selected"); assert_eq!(picker.selected(), Some(0), "selected");
assert_eq!(picker.relative_selected(), Some(0), "relative_selected"); assert_eq!(picker.relative_selected(), Some(0), "relative_selected");

View File

@ -118,7 +118,7 @@ impl Television {
} }
} }
pub fn select_prev_entry(&mut self) { pub fn select_prev_entry(&mut self, step: u32) {
let (result_count, picker) = match self.mode { let (result_count, picker) = match self.mode {
Mode::Channel => { Mode::Channel => {
(self.channel.result_count(), &mut self.results_picker) (self.channel.result_count(), &mut self.results_picker)
@ -131,12 +131,13 @@ impl Television {
return; return;
} }
picker.select_prev( picker.select_prev(
step,
result_count as usize, result_count as usize,
self.results_area_height as usize, self.results_area_height as usize,
); );
} }
pub fn select_next_entry(&mut self) { pub fn select_next_entry(&mut self, step: u32) {
let (result_count, picker) = match self.mode { let (result_count, picker) = match self.mode {
Mode::Channel => { Mode::Channel => {
(self.channel.result_count(), &mut self.results_picker) (self.channel.result_count(), &mut self.results_picker)
@ -149,6 +150,7 @@ impl Television {
return; return;
} }
picker.select_next( picker.select_next(
step,
result_count as usize, result_count as usize,
self.results_area_height as usize, self.results_area_height as usize,
); );
@ -277,11 +279,19 @@ impl Television {
} }
Action::SelectNextEntry => { Action::SelectNextEntry => {
self.reset_preview_scroll(); self.reset_preview_scroll();
self.select_next_entry(); self.select_next_entry(1);
} }
Action::SelectPrevEntry => { Action::SelectPrevEntry => {
self.reset_preview_scroll(); self.reset_preview_scroll();
self.select_prev_entry(); self.select_prev_entry(1);
}
Action::SelectNextPage => {
self.reset_preview_scroll();
self.select_next_entry(self.results_area_height);
}
Action::SelectPrevPage => {
self.reset_preview_scroll();
self.select_prev_entry(self.results_area_height);
} }
Action::ScrollPreviewDown => self.scroll_preview_down(1), Action::ScrollPreviewDown => self.scroll_preview_down(1),
Action::ScrollPreviewUp => self.scroll_preview_up(1), Action::ScrollPreviewUp => self.scroll_preview_up(1),