gpui: Don't panic when failing to exec system opener (#21674)
Some checks are pending
CI / Check Postgres and Protobuf migrations, mergability (push) Waiting to run
CI / Check formatting and spelling (push) Waiting to run
CI / (macOS) Run Clippy and tests (push) Waiting to run
CI / (Linux) Run Clippy and tests (push) Waiting to run
CI / (Linux) Build Remote Server (push) Waiting to run
CI / (Windows) Run Clippy and tests (push) Waiting to run
CI / Create a macOS bundle (push) Blocked by required conditions
CI / Create a Linux bundle (push) Blocked by required conditions
CI / Create arm64 Linux bundle (push) Blocked by required conditions
CI / Auto release preview (push) Blocked by required conditions
Deploy Docs / Deploy Docs (push) Waiting to run
Docs / Check formatting (push) Waiting to run
Script / ShellCheck Scripts (push) Waiting to run

This commit is contained in:
Cole Miller 2024-12-06 22:11:40 -05:00 committed by GitHub
parent 4d22a07a1e
commit fa7dddd6b5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 8 deletions

View file

@ -18,7 +18,7 @@ use std::{
time::Duration,
};
use anyhow::anyhow;
use anyhow::{anyhow, Context as _};
use async_task::Runnable;
use calloop::channel::Channel;
use calloop::{EventLoop, LoopHandle, LoopSignal};
@ -382,14 +382,14 @@ impl<P: LinuxClient + 'static> Platform for P {
}
fn open_with_system(&self, path: &Path) {
let executor = self.background_executor().clone();
let path = path.to_owned();
executor
self.background_executor()
.spawn(async move {
let _ = std::process::Command::new("xdg-open")
.arg(path)
.spawn()
.expect("Failed to open file with xdg-open");
.context("invoking xdg-open")
.log_err();
})
.detach();
}

View file

@ -10,7 +10,7 @@ use crate::{
PlatformTextSystem, PlatformWindow, Result, ScreenCaptureSource, SemanticVersion, Task,
WindowAppearance, WindowParams,
};
use anyhow::anyhow;
use anyhow::{anyhow, Context as _};
use block::ConcreteBlock;
use cocoa::{
appkit::{
@ -57,6 +57,7 @@ use std::{
sync::Arc,
};
use strum::IntoEnumIterator;
use util::ResultExt;
#[allow(non_upper_case_globals)]
const NSUTF8StringEncoding: NSUInteger = 4;
@ -779,15 +780,16 @@ impl Platform for MacPlatform {
}
fn open_with_system(&self, path: &Path) {
let path = path.to_path_buf();
let path = path.to_owned();
self.0
.lock()
.background_executor
.spawn(async move {
std::process::Command::new("open")
let _ = std::process::Command::new("open")
.arg(path)
.spawn()
.expect("Failed to open file");
.context("invoking open command")
.log_err();
})
.detach();
}