summaryrefslogtreecommitdiffstats
path: root/src/interactive/app/eventloop.rs
diff options
context:
space:
mode:
authorSebastian Thiel <sebastian.thiel@icloud.com>2024-01-23 15:24:52 +0100
committerSebastian Thiel <sebastian.thiel@icloud.com>2024-01-23 15:39:56 +0100
commit78b9a8e22568c902132ed98d32e223ff71eb7b06 (patch)
treec097091966e2af1b00916ff6e70d49ee4362b532 /src/interactive/app/eventloop.rs
parent600bee234edd4e7922017c26927a6f135a02c335 (diff)
feat: add `dua i --no-entry-check` flag. (#227)
With it, in interactive mode, entries will not be checked for presence. This can avoid laggy behaviour when switching between directories as `lstat` calls will not run, which can be slow on some filesystems.
Diffstat (limited to 'src/interactive/app/eventloop.rs')
-rw-r--r--src/interactive/app/eventloop.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/interactive/app/eventloop.rs b/src/interactive/app/eventloop.rs
index 1053539..c2562fc 100644
--- a/src/interactive/app/eventloop.rs
+++ b/src/interactive/app/eventloop.rs
@@ -3,7 +3,7 @@ use crate::interactive::{
app::navigation::Navigation,
state::FocussedPane,
widgets::{glob_search, MainWindow, MainWindowProps},
- CursorDirection, CursorMode, DisplayOptions, MarkEntryMode,
+ CursorDirection, CursorMode, DisplayOptions, EntryCheck, MarkEntryMode,
};
use anyhow::Result;
use crossbeam::channel::Receiver;
@@ -197,7 +197,7 @@ impl AppState {
self.entries = tree_view.sorted_entries(
self.navigation().view_root,
self.sorting,
- self.scan.is_some(),
+ self.entry_check(),
);
if !self.received_events {
@@ -217,6 +217,10 @@ impl AppState {
self.reset_message(); // force "scanning" to appear
}
+ pub(crate) fn entry_check(&self) -> EntryCheck {
+ EntryCheck::new(self.scan.is_some(), self.allow_entry_check)
+ }
+
fn process_terminal_event<B>(
&mut self,
window: &mut MainWindow,
@@ -443,7 +447,7 @@ impl AppState {
self.entries = tree.sorted_entries(
self.navigation().view_root,
self.sorting,
- self.scan.is_some(),
+ self.entry_check(),
);
self.navigation_mut().selected = self.entries.first().map(|e| e.index);
@@ -498,7 +502,7 @@ impl AppState {
glob_tree_root: Some(tree_root),
};
let new_entries =
- glob_tree_view.sorted_entries(tree_root, self.sorting, self.scan.is_some());
+ glob_tree_view.sorted_entries(tree_root, self.sorting, self.entry_check());
let new_entries = self
.navigation_mut()
@@ -553,7 +557,7 @@ impl AppState {
self.entries = tree_view.sorted_entries(
self.navigation().view_root,
self.sorting,
- self.scan.is_some(),
+ self.entry_check(),
);
}
}