diff --git a/Cargo.lock b/Cargo.lock index 2d85117c..0b9fc2d3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -355,9 +355,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.20" +version = "1.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a" +checksum = "8691782945451c1c383942c4874dbe63814f61cb57ef773cda2972682b7bb3c0" dependencies = [ "jobserver", "libc", @@ -2123,9 +2123,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" +checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ "bitflags 2.9.0", ] @@ -3320,9 +3320,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e27d6ad3dac991091e4d35de9ba2d2d00647c5d0fc26c5496dee55984ae111b" +checksum = "d9fb597c990f03753e08d3c29efbfcf2019a003b4bf4ba19225c158e1549f0f3" dependencies = [ "memchr", ] diff --git a/yazi-core/src/tab/commands/cd.rs b/yazi-core/src/tab/commands/cd.rs index f653942f..3f881200 100644 --- a/yazi-core/src/tab/commands/cd.rs +++ b/yazi-core/src/tab/commands/cd.rs @@ -72,6 +72,8 @@ impl Tab { } Pubsub::pub_from_cd(self.id, self.cwd()); + self.hover(None); + MgrProxy::refresh(); render!(); } diff --git a/yazi-core/src/tab/commands/sort.rs b/yazi-core/src/tab/commands/sort.rs index a7abe2b5..17ddfbd8 100644 --- a/yazi-core/src/tab/commands/sort.rs +++ b/yazi-core/src/tab/commands/sort.rs @@ -8,16 +8,18 @@ use crate::{tab::Tab, tasks::Tasks}; impl Tab { pub fn sort(&mut self, c: CmdCow, tasks: &Tasks) { - let pref = &mut self.pref; - if let Some(by) = c.first_str() { - pref.sort_by = SortBy::from_str(by).unwrap_or_default(); + let mut new = self.pref.clone(); + new.sort_by = c.first_str().and_then(|s| SortBy::from_str(s).ok()).unwrap_or(new.sort_by); + new.sort_reverse = c.maybe_bool("reverse").unwrap_or(new.sort_reverse); + new.sort_dir_first = c.maybe_bool("dir-first").unwrap_or(new.sort_dir_first); + new.sort_sensitive = c.maybe_bool("sensitive").unwrap_or(new.sort_sensitive); + new.sort_translit = c.maybe_bool("translit").unwrap_or(new.sort_translit); + + if new == self.pref { + return; } - pref.sort_reverse = c.maybe_bool("reverse").unwrap_or(pref.sort_reverse); - pref.sort_dir_first = c.maybe_bool("dir-first").unwrap_or(pref.sort_dir_first); - pref.sort_sensitive = c.maybe_bool("sensitive").unwrap_or(pref.sort_sensitive); - pref.sort_translit = c.maybe_bool("translit").unwrap_or(pref.sort_translit); - + self.pref = new; self.apply_files_attrs(); self.hover(None); tasks.prework_sorted(&self.current.files); diff --git a/yazi-dds/src/client.rs b/yazi-dds/src/client.rs index c4986955..972e5392 100644 --- a/yazi-dds/src/client.rs +++ b/yazi-dds/src/client.rs @@ -144,11 +144,10 @@ impl Client { } } None => loop { + time::sleep(time::Duration::from_secs(1)).await; if let Ok(new) = make(&kinds).await { lines = new; break; - } else { - time::sleep(time::Duration::from_secs(1)).await; } }, }