From 3bdccb75136a10cdaf1687df35e46fd9abe2b0d9 Mon Sep 17 00:00:00 2001 From: Amr Bashir Date: Thu, 15 Feb 2024 06:39:42 +0200 Subject: [PATCH] fix(linux): percent-decode paths before firing `FileDropEvent` (#1168) --- .changes/linux-file-drop-event.md | 5 +++++ Cargo.toml | 1 + src/webkitgtk/file_drop.rs | 23 ++++++++++++++--------- 3 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 .changes/linux-file-drop-event.md diff --git a/.changes/linux-file-drop-event.md b/.changes/linux-file-drop-event.md new file mode 100644 index 000000000..d43b258f6 --- /dev/null +++ b/.changes/linux-file-drop-event.md @@ -0,0 +1,5 @@ +--- +"wry": "patch" +--- + +On Linux, decode `FilDropEvent` paths before emitting them to make it consistent across all platforms. diff --git a/Cargo.toml b/Cargo.toml index 725786c12..9d6865033 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -67,6 +67,7 @@ gtk = { version = "0.18", optional = true } soup3 = { version = "0.5", optional = true } x11-dl = { version = "2.9", optional = true } gdkx11 = { version = "0.18", optional = true } +percent-encoding = "2.1" [target."cfg(target_os = \"windows\")".dependencies] webview2-com = "0.28" diff --git a/src/webkitgtk/file_drop.rs b/src/webkitgtk/file_drop.rs index cb9eab121..ba4dc57b6 100644 --- a/src/webkitgtk/file_drop.rs +++ b/src/webkitgtk/file_drop.rs @@ -15,18 +15,23 @@ pub(crate) fn connect_drag_event(webview: WebView, handler: Box>(); - listener_ref.1.set(Some(uris.clone())); + .collect::>(); + + listener_ref.1.set(Some(paths.clone())); listener_ref.0(FileDropEvent::Hovered { - paths: uris, + paths, position: (x, y), }); } else { @@ -36,10 +41,10 @@ pub(crate) fn connect_drag_event(webview: WebView, handler: Box