Bläddra i källkod

feat (desktop): upgrade from wry 37 to 41 (#2618)

Andrew Scott 11 månader sedan
förälder
incheckning
69d7098d0e

+ 51 - 38
Cargo.lock

@@ -2999,6 +2999,12 @@ version = "0.15.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
 
+[[package]]
+name = "dpi"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53"
+
 [[package]]
 name = "dtoa"
 version = "1.0.9"
@@ -10586,16 +10592,16 @@ dependencies = [
 
 [[package]]
 name = "webview2-com"
-version = "0.28.0"
+version = "0.31.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0ae9c7e420783826cf769d2c06ac9ba462f450eca5893bb8c6c6529a4e5dd33"
+checksum = "6516cfa64c6b3212686080eeec378e662c2af54bb2a5b2a22749673f5cb2226f"
 dependencies = [
  "webview2-com-macros",
  "webview2-com-sys",
- "windows 0.52.0",
- "windows-core 0.52.0",
- "windows-implement 0.52.0",
- "windows-interface 0.52.0",
+ "windows 0.57.0",
+ "windows-core 0.57.0",
+ "windows-implement 0.57.0",
+ "windows-interface 0.57.0",
 ]
 
 [[package]]
@@ -10611,13 +10617,13 @@ dependencies = [
 
 [[package]]
 name = "webview2-com-sys"
-version = "0.28.0"
+version = "0.31.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6ad85fceee6c42fa3d61239eba5a11401bf38407a849ed5ea1b407df08cca72"
+checksum = "c76d5b77320ff155660be1df3e6588bc85c75f1a9feef938cc4dc4dd60d1d7cf"
 dependencies = [
  "thiserror",
- "windows 0.52.0",
- "windows-core 0.52.0",
+ "windows 0.57.0",
+ "windows-core 0.57.0",
 ]
 
 [[package]]
@@ -10687,25 +10693,23 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 
 [[package]]
 name = "windows"
-version = "0.52.0"
+version = "0.54.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
+checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49"
 dependencies = [
- "windows-core 0.52.0",
- "windows-implement 0.52.0",
- "windows-interface 0.52.0",
+ "windows-core 0.54.0",
+ "windows-implement 0.53.0",
+ "windows-interface 0.53.0",
  "windows-targets 0.52.5",
 ]
 
 [[package]]
 name = "windows"
-version = "0.54.0"
+version = "0.57.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49"
+checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143"
 dependencies = [
- "windows-core 0.54.0",
- "windows-implement 0.53.0",
- "windows-interface 0.53.0",
+ "windows-core 0.57.0",
  "windows-targets 0.52.5",
 ]
 
@@ -10728,11 +10732,23 @@ dependencies = [
  "windows-targets 0.52.5",
 ]
 
+[[package]]
+name = "windows-core"
+version = "0.57.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d"
+dependencies = [
+ "windows-implement 0.57.0",
+ "windows-interface 0.57.0",
+ "windows-result",
+ "windows-targets 0.52.5",
+]
+
 [[package]]
 name = "windows-implement"
-version = "0.52.0"
+version = "0.53.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946"
+checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -10741,9 +10757,9 @@ dependencies = [
 
 [[package]]
 name = "windows-implement"
-version = "0.53.0"
+version = "0.57.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd"
+checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -10752,9 +10768,9 @@ dependencies = [
 
 [[package]]
 name = "windows-interface"
-version = "0.52.0"
+version = "0.53.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1"
+checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -10763,9 +10779,9 @@ dependencies = [
 
 [[package]]
 name = "windows-interface"
-version = "0.53.0"
+version = "0.57.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60"
+checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -11035,26 +11051,25 @@ dependencies = [
 
 [[package]]
 name = "wry"
-version = "0.37.0"
+version = "0.41.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b717040ba9771fd88eb428c6ea6b555f8e734ff8534f02c13e8f10d97f5935e"
+checksum = "68b00c945786b02d7805d09a969fa36d0eee4e0bd4fb3ec2a79d2bf45a1b44cd"
 dependencies = [
- "base64 0.21.7",
+ "base64 0.22.1",
  "block",
- "cfg_aliases 0.1.1",
  "cocoa",
  "core-graphics",
  "crossbeam-channel",
+ "dpi",
  "dunce",
  "gdkx11",
  "gtk",
  "html5ever",
- "http 0.2.12",
+ "http 1.1.0",
  "javascriptcore-rs",
  "jni",
  "kuchikiki",
  "libc",
- "log",
  "ndk",
  "ndk-context",
  "ndk-sys",
@@ -11063,8 +11078,6 @@ dependencies = [
  "once_cell",
  "percent-encoding",
  "raw-window-handle 0.6.2",
- "serde",
- "serde_json",
  "sha2",
  "soup3",
  "tao-macros",
@@ -11072,8 +11085,8 @@ dependencies = [
  "webkit2gtk",
  "webkit2gtk-sys",
  "webview2-com",
- "windows 0.52.0",
- "windows-implement 0.52.0",
+ "windows 0.57.0",
+ "windows-core 0.57.0",
  "windows-version",
  "x11-dl",
 ]

+ 2 - 2
packages/desktop/Cargo.toml

@@ -25,10 +25,10 @@ serde = "1.0.136"
 serde_json = "1.0.79"
 thiserror = { workspace = true }
 tracing = { workspace = true }
-wry = { version = "0.37.0", default-features = false, features = [
+wry = { version = "0.41.0", default-features = false, features = [
     "os-webview",
     "protocol",
-    "file-drop",
+    "drag-drop",
 ] }
 futures-channel = { workspace = true }
 tokio = { workspace = true, features = [

+ 2 - 2
packages/desktop/src/app.rs

@@ -300,8 +300,8 @@ impl App {
                 if drag.files().is_some() {
                     let file_event = recent_file.current().unwrap();
                     let paths = match file_event {
-                        wry::FileDropEvent::Hovered { paths, .. } => paths,
-                        wry::FileDropEvent::Dropped { paths, .. } => paths,
+                        wry::DragDropEvent::Enter { paths, .. } => paths,
+                        wry::DragDropEvent::Drop { paths, .. } => paths,
                         _ => vec![],
                     };
                     Rc::new(PlatformEventData::new(Box::new(DesktopFileDragEvent {

+ 3 - 1
packages/desktop/src/desktop_context.rs

@@ -190,7 +190,9 @@ impl DesktopService {
 
     /// Set the zoom level of the webview
     pub fn set_zoom_level(&self, level: f64) {
-        self.webview.zoom(level);
+        if let Err(e) = self.webview.zoom(level) {
+            tracing::warn!("Set webview zoom failed: {e}");
+        }
     }
 
     /// opens DevTool window

+ 4 - 4
packages/desktop/src/file_upload.rs

@@ -19,7 +19,7 @@ use std::{
     str::FromStr,
     sync::Arc,
 };
-use wry::FileDropEvent;
+use wry::DragDropEvent;
 
 #[derive(Debug, Deserialize)]
 pub(crate) struct FileDialogRequest {
@@ -162,14 +162,14 @@ impl HasFormData for DesktopFileUploadForm {
 
 #[derive(Default, Clone)]
 pub struct NativeFileHover {
-    event: Rc<RefCell<Option<FileDropEvent>>>,
+    event: Rc<RefCell<Option<DragDropEvent>>>,
 }
 impl NativeFileHover {
-    pub fn set(&self, event: FileDropEvent) {
+    pub fn set(&self, event: DragDropEvent) {
         self.event.borrow_mut().replace(event);
     }
 
-    pub fn current(&self) -> Option<FileDropEvent> {
+    pub fn current(&self) -> Option<DragDropEvent> {
         self.event.borrow_mut().clone()
     }
 }

+ 4 - 3
packages/desktop/src/webview.rs

@@ -106,9 +106,10 @@ impl WebviewInstance {
             }
         };
 
-        let ipc_handler = move |payload: String| {
+        let ipc_handler = move |payload: wry::http::Request<String>| {
             // defer the event to the main thread
-            if let Ok(msg) = serde_json::from_str(&payload) {
+            let body = payload.into_body();
+            if let Ok(msg) = serde_json::from_str(&body) {
                 _ = proxy_.send_event(UserWindowEvent::Ipc { id: window_id, msg });
             }
         };
@@ -159,7 +160,7 @@ impl WebviewInstance {
             }) // prevent all navigations
             .with_asynchronous_custom_protocol(String::from("dioxus"), request_handler)
             .with_web_context(&mut web_context)
-            .with_file_drop_handler(file_drop_handler);
+            .with_drag_drop_handler(file_drop_handler);
 
         if let Some(color) = cfg.background_color {
             webview = webview.with_background_color(color);