gpui: Don't panic when failing to exec system opener (#21674)
This commit is contained in:
parent
4d22a07a1e
commit
fa7dddd6b5
2 changed files with 10 additions and 8 deletions
|
@ -18,7 +18,7 @@ use std::{
|
||||||
time::Duration,
|
time::Duration,
|
||||||
};
|
};
|
||||||
|
|
||||||
use anyhow::anyhow;
|
use anyhow::{anyhow, Context as _};
|
||||||
use async_task::Runnable;
|
use async_task::Runnable;
|
||||||
use calloop::channel::Channel;
|
use calloop::channel::Channel;
|
||||||
use calloop::{EventLoop, LoopHandle, LoopSignal};
|
use calloop::{EventLoop, LoopHandle, LoopSignal};
|
||||||
|
@ -382,14 +382,14 @@ impl<P: LinuxClient + 'static> Platform for P {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn open_with_system(&self, path: &Path) {
|
fn open_with_system(&self, path: &Path) {
|
||||||
let executor = self.background_executor().clone();
|
|
||||||
let path = path.to_owned();
|
let path = path.to_owned();
|
||||||
executor
|
self.background_executor()
|
||||||
.spawn(async move {
|
.spawn(async move {
|
||||||
let _ = std::process::Command::new("xdg-open")
|
let _ = std::process::Command::new("xdg-open")
|
||||||
.arg(path)
|
.arg(path)
|
||||||
.spawn()
|
.spawn()
|
||||||
.expect("Failed to open file with xdg-open");
|
.context("invoking xdg-open")
|
||||||
|
.log_err();
|
||||||
})
|
})
|
||||||
.detach();
|
.detach();
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ use crate::{
|
||||||
PlatformTextSystem, PlatformWindow, Result, ScreenCaptureSource, SemanticVersion, Task,
|
PlatformTextSystem, PlatformWindow, Result, ScreenCaptureSource, SemanticVersion, Task,
|
||||||
WindowAppearance, WindowParams,
|
WindowAppearance, WindowParams,
|
||||||
};
|
};
|
||||||
use anyhow::anyhow;
|
use anyhow::{anyhow, Context as _};
|
||||||
use block::ConcreteBlock;
|
use block::ConcreteBlock;
|
||||||
use cocoa::{
|
use cocoa::{
|
||||||
appkit::{
|
appkit::{
|
||||||
|
@ -57,6 +57,7 @@ use std::{
|
||||||
sync::Arc,
|
sync::Arc,
|
||||||
};
|
};
|
||||||
use strum::IntoEnumIterator;
|
use strum::IntoEnumIterator;
|
||||||
|
use util::ResultExt;
|
||||||
|
|
||||||
#[allow(non_upper_case_globals)]
|
#[allow(non_upper_case_globals)]
|
||||||
const NSUTF8StringEncoding: NSUInteger = 4;
|
const NSUTF8StringEncoding: NSUInteger = 4;
|
||||||
|
@ -779,15 +780,16 @@ impl Platform for MacPlatform {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn open_with_system(&self, path: &Path) {
|
fn open_with_system(&self, path: &Path) {
|
||||||
let path = path.to_path_buf();
|
let path = path.to_owned();
|
||||||
self.0
|
self.0
|
||||||
.lock()
|
.lock()
|
||||||
.background_executor
|
.background_executor
|
||||||
.spawn(async move {
|
.spawn(async move {
|
||||||
std::process::Command::new("open")
|
let _ = std::process::Command::new("open")
|
||||||
.arg(path)
|
.arg(path)
|
||||||
.spawn()
|
.spawn()
|
||||||
.expect("Failed to open file");
|
.context("invoking open command")
|
||||||
|
.log_err();
|
||||||
})
|
})
|
||||||
.detach();
|
.detach();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue