From 09459fa3a4a9e0b89432a629b193ad9d2186d31b Mon Sep 17 00:00:00 2001 From: apricotbucket28 <71973804+apricotbucket28@users.noreply.github.com> Date: Tue, 16 Jul 2024 14:42:57 -0300 Subject: [PATCH] wayland: Fix drag and drop for paths with spaces (#14574) This wasn't doing any proper parsing before, so `%20` or similar encoded characters weren't handled correctly. Release Notes: - N/A --- crates/gpui/src/platform/linux/wayland/client.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/gpui/src/platform/linux/wayland/client.rs b/crates/gpui/src/platform/linux/wayland/client.rs index d3e86b90202cd3f5765658fe882233f2eff6fce4..73afc5b97edb990cda3045dcfd350b2d2f0ec773 100644 --- a/crates/gpui/src/platform/linux/wayland/client.rs +++ b/crates/gpui/src/platform/linux/wayland/client.rs @@ -11,6 +11,7 @@ use calloop_wayland_source::WaylandSource; use collections::HashMap; use filedescriptor::Pipe; +use http::Url; use smallvec::SmallVec; use util::ResultExt; use wayland_backend::client::ObjectId; @@ -1795,7 +1796,8 @@ impl Dispatch for WaylandClientStatePtr { let paths: SmallVec<[_; 2]> = file_list .lines() - .map(|path| PathBuf::from(path.replace("file://", ""))) + .filter_map(|path| Url::parse(path).log_err()) + .filter_map(|url| url.to_file_path().log_err()) .collect(); let position = Point::new(x.into(), y.into());