diff --git a/src/app.rs b/src/app.rs index dfea353..fb9ebfd 100644 --- a/src/app.rs +++ b/src/app.rs @@ -665,7 +665,11 @@ impl App { }); for msg in msgs { - self = self.handle_external(msg, Some(key))?; + // Rename breaks without enqueue + let external = MsgIn::External(msg); + let task = Task::new(external, Some(key)); + let msg_out = MsgOut::Enqueue(task); + self.msg_out.push_back(msg_out); } Ok(self) diff --git a/src/msg/out/mod.rs b/src/msg/out/mod.rs index 78b3dab..7f47753 100644 --- a/src/msg/out/mod.rs +++ b/src/msg/out/mod.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use crate::app::Command; +use crate::app::{Command, Task}; #[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)] pub enum MsgOut { @@ -33,4 +33,5 @@ pub enum MsgOut { PrintSelectionAndQuit, PrintResultAndQuit, PrintAppStateAndQuit, + Enqueue(Task), } diff --git a/src/runner.rs b/src/runner.rs index ebc0647..177389f 100644 --- a/src/runner.rs +++ b/src/runner.rs @@ -349,6 +349,10 @@ impl Runner { while let Some(msg) = app.msg_out.pop_front() { use app::MsgOut::*; match msg { + Enqueue(task) => { + tx_msg_in.send(task)?; + } + Quit => { result = Ok(None); break 'outer;