1
1
mirror of https://github.com/wez/wezterm.git synced 2024-11-24 07:46:59 +03:00

fix panic when spawning invalid command via reused gui instance

refs: #1696
This commit is contained in:
Wez Furlong 2022-03-09 10:33:29 -07:00
parent d5998ccb56
commit ce3dd00444
2 changed files with 7 additions and 3 deletions

View File

@ -34,7 +34,7 @@ impl wezterm_term::Clipboard for ClipboardHelper {
} }
impl TermWindow { impl TermWindow {
pub fn setup_clipboard(window: &Window, mux_window_id: MuxWindowId) { pub fn setup_clipboard(window: &Window, mux_window_id: MuxWindowId) -> anyhow::Result<()> {
let clipboard: Arc<dyn wezterm_term::Clipboard> = Arc::new(ClipboardHelper { let clipboard: Arc<dyn wezterm_term::Clipboard> = Arc::new(ClipboardHelper {
window: window.clone(), window: window.clone(),
}); });
@ -42,7 +42,9 @@ impl TermWindow {
Arc::new(crate::download::Downloader::new()); Arc::new(crate::download::Downloader::new());
let mux = Mux::get().unwrap(); let mux = Mux::get().unwrap();
let mut mux_window = mux.get_window_mut(mux_window_id).unwrap(); let mut mux_window = mux
.get_window_mut(mux_window_id)
.ok_or_else(|| anyhow::anyhow!("mux doesn't know about window yet!?"))?;
mux_window.set_clipboard(&clipboard); mux_window.set_clipboard(&clipboard);
for tab in mux_window.iter() { for tab in mux_window.iter() {
@ -51,6 +53,8 @@ impl TermWindow {
pos.pane.set_download_handler(&downloader); pos.pane.set_download_handler(&downloader);
} }
} }
Ok(())
} }
pub fn copy_to_clipboard(&self, clipboard: ClipboardCopyDestination, text: String) { pub fn copy_to_clipboard(&self, clipboard: ClipboardCopyDestination, text: String) {

View File

@ -778,7 +778,7 @@ impl TermWindow {
tw.borrow_mut().window.replace(window.clone()); tw.borrow_mut().window.replace(window.clone());
Self::apply_icon(&window)?; Self::apply_icon(&window)?;
Self::setup_clipboard(&window, mux_window_id); Self::setup_clipboard(&window, mux_window_id)?;
let config_subscription = config::subscribe_to_config_reload({ let config_subscription = config::subscribe_to_config_reload({
let window = window.clone(); let window = window.clone();