diff --git a/yazi-core/src/cmp/commands/trigger.rs b/yazi-core/src/cmp/commands/trigger.rs index 01534fba..42a8ea1d 100644 --- a/yazi-core/src/cmp/commands/trigger.rs +++ b/yazi-core/src/cmp/commands/trigger.rs @@ -12,18 +12,24 @@ use crate::cmp::Cmp; impl Cmp { #[yazi_codegen::command] pub fn trigger(&mut self, opt: TriggerOpt) { - if opt.ticket < self.ticket { - return; + if let Some(ticket) = opt.ticket { + if ticket < self.ticket { + return; + } else { + self.ticket = ticket; + } } - self.ticket = opt.ticket; let Some((parent, word)) = Self::split_path(&opt.word) else { return self.close(false); }; if self.caches.contains_key(&parent) { return self.show( - Cmd::default().with_any("cache-name", parent).with("word", word).with("ticket", opt.ticket), + Cmd::default() + .with_any("cache-name", parent) + .with("word", word) + .with("ticket", self.ticket), ); } diff --git a/yazi-parser/src/cmp/trigger.rs b/yazi-parser/src/cmp/trigger.rs index ea752347..72a55a36 100644 --- a/yazi-parser/src/cmp/trigger.rs +++ b/yazi-parser/src/cmp/trigger.rs @@ -2,14 +2,14 @@ use yazi_shared::{Id, SStr, event::{CmdCow, Data}}; pub struct TriggerOpt { pub word: SStr, - pub ticket: Id, + pub ticket: Option, } impl From for TriggerOpt { fn from(mut c: CmdCow) -> Self { Self { word: c.take_first_str().unwrap_or_default(), - ticket: c.get("ticket").and_then(Data::as_id).unwrap_or_default(), + ticket: c.get("ticket").and_then(Data::as_id), } } }