Save/simplify show hidden items (#1026)

Closes: #1022, #605
See: #982
Original PR: #36

This commit reimplements saving the "show hidden" files setting. I
simplified the implementation by making the toggle global. My original
PR (#36) implemented per tab show hidden, but that complicates saving
configs which is why (I think?) why the saving the toggle was scrapped.
This commit is contained in:
Joshua Megnauth 2025-06-18 18:35:39 -04:00 • committed by GitHub
parent c99caff5ed
commit ec685bd185
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 17 deletions

View file

@ -227,9 +227,7 @@ impl Action {
Action::TabViewGrid => Message::TabView(entity_opt, tab::View::Grid), Action::TabViewGrid => Message::TabView(entity_opt, tab::View::Grid),
Action::TabViewList => Message::TabView(entity_opt, tab::View::List), Action::TabViewList => Message::TabView(entity_opt, tab::View::List),
Action::ToggleFoldersFirst => Message::ToggleFoldersFirst, Action::ToggleFoldersFirst => Message::ToggleFoldersFirst,
Action::ToggleShowHidden => { Action::ToggleShowHidden => Message::ToggleShowHidden,
Message::TabMessage(entity_opt, tab::Message::ToggleShowHidden)
}
Action::ToggleSort(sort) => { Action::ToggleSort(sort) => {
Message::TabMessage(entity_opt, tab::Message::ToggleSort(*sort)) Message::TabMessage(entity_opt, tab::Message::ToggleSort(*sort))
} }
@ -382,6 +380,7 @@ pub enum Message {
TimeConfigChange(TimeConfig), TimeConfigChange(TimeConfig),
ToggleContextPage(ContextPage), ToggleContextPage(ContextPage),
ToggleFoldersFirst, ToggleFoldersFirst,
ToggleShowHidden,
Undo(usize), Undo(usize),
UndoTrash(widget::ToastId, Arc<[PathBuf]>), UndoTrash(widget::ToastId, Arc<[PathBuf]>),
UndoTrashStart(Vec<TrashItem>), UndoTrashStart(Vec<TrashItem>),
@ -3444,6 +3443,11 @@ impl Application for App {
config.folders_first = !config.folders_first; config.folders_first = !config.folders_first;
return self.update(Message::TabConfig(config)); return self.update(Message::TabConfig(config));
} }
Message::ToggleShowHidden => {
let mut config = self.config.tab;
config.show_hidden = !config.show_hidden;
return self.update(Message::TabConfig(config));
}
Message::TabMessage(entity_opt, tab_message) => { Message::TabMessage(entity_opt, tab_message) => {
let entity = entity_opt.unwrap_or_else(|| self.tab_model.active()); let entity = entity_opt.unwrap_or_else(|| self.tab_model.active());

View file

@ -1401,7 +1401,6 @@ pub enum Message {
SetSort(HeadingOptions, bool), SetSort(HeadingOptions, bool),
TabComplete(PathBuf, Vec<(String, PathBuf)>), TabComplete(PathBuf, Vec<(String, PathBuf)>),
Thumbnail(PathBuf, ItemThumbnail), Thumbnail(PathBuf, ItemThumbnail),
ToggleShowHidden,
View(View), View(View),
ToggleSort(HeadingOptions), ToggleSort(HeadingOptions),
Drop(Option<(Location, ClipboardPaste)>), Drop(Option<(Location, ClipboardPaste)>),
@ -2799,15 +2798,24 @@ impl Tab {
Message::Config(config) => { Message::Config(config) => {
// View is preserved for existing tabs // View is preserved for existing tabs
let view = self.config.view; let view = self.config.view;
let show_hidden = self.config.show_hidden;
let military_time_changed = self.config.military_time != config.military_time; let military_time_changed = self.config.military_time != config.military_time;
let show_hidden_changed = self.config.show_hidden != config.show_hidden;
self.config = config; self.config = config;
self.config.view = view; self.config.view = view;
self.config.show_hidden = show_hidden;
if military_time_changed { if military_time_changed {
self.date_time_formatter = date_time_formatter(self.config.military_time); self.date_time_formatter = date_time_formatter(self.config.military_time);
self.time_formatter = time_formatter(self.config.military_time); self.time_formatter = time_formatter(self.config.military_time);
} }
if show_hidden_changed {
if let Location::Search(path, term, ..) = &self.location {
cd = Some(Location::Search(
path.clone(),
term.clone(),
self.config.show_hidden,
Instant::now(),
));
}
}
} }
Message::ContextAction(action) => { Message::ContextAction(action) => {
// Close context menu // Close context menu
@ -3499,17 +3507,6 @@ impl Tab {
} }
} }
} }
Message::ToggleShowHidden => {
self.config.show_hidden = !self.config.show_hidden;
if let Location::Search(path, term, ..) = &self.location {
cd = Some(Location::Search(
path.clone(),
term.clone(),
self.config.show_hidden,
Instant::now(),
));
}
}
Message::View(view) => { Message::View(view) => {
self.config.view = view; self.config.view = view;
} }