diff --git a/.changes/impl-ext-for-webview-windows.md b/.changes/impl-ext-for-webview-windows.md new file mode 100644 index 00000000..ca9f1451 --- /dev/null +++ b/.changes/impl-ext-for-webview-windows.md @@ -0,0 +1,6 @@ +--- +"positioner": "patch" +"window-state": "patch" +--- + +Implement `WindowExt` for `WebviewWindow`. diff --git a/Cargo.lock b/Cargo.lock index b5142f0a..d5762788 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -230,7 +230,7 @@ checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" [[package]] name = "api" -version = "2.0.0-beta.6" +version = "2.0.0-beta.7" dependencies = [ "log", "serde", @@ -6043,7 +6043,7 @@ dependencies = [ [[package]] name = "tauri-plugin-authenticator" -version = "2.0.0-beta.4" +version = "2.0.0-beta.5" dependencies = [ "authenticator", "base64 0.22.0", @@ -6065,7 +6065,7 @@ dependencies = [ [[package]] name = "tauri-plugin-autostart" -version = "2.0.0-beta.4" +version = "2.0.0-beta.5" dependencies = [ "auto-launch", "log", @@ -6078,7 +6078,7 @@ dependencies = [ [[package]] name = "tauri-plugin-barcode-scanner" -version = "2.0.0-beta.4" +version = "2.0.0-beta.5" dependencies = [ "log", "serde", @@ -6090,7 +6090,7 @@ dependencies = [ [[package]] name = "tauri-plugin-biometric" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "log", "serde", @@ -6103,7 +6103,7 @@ dependencies = [ [[package]] name = "tauri-plugin-cli" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "clap", "log", @@ -6116,7 +6116,7 @@ dependencies = [ [[package]] name = "tauri-plugin-clipboard-manager" -version = "2.1.0-beta.1" +version = "2.1.0-beta.2" dependencies = [ "arboard", "image", @@ -6130,7 +6130,7 @@ dependencies = [ [[package]] name = "tauri-plugin-deep-link" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "log", "serde", @@ -6143,7 +6143,7 @@ dependencies = [ [[package]] name = "tauri-plugin-dialog" -version = "2.0.0-beta.6" +version = "2.0.0-beta.7" dependencies = [ "dunce", "log", @@ -6159,7 +6159,7 @@ dependencies = [ [[package]] name = "tauri-plugin-fs" -version = "2.0.0-beta.6" +version = "2.0.0-beta.7" dependencies = [ "anyhow", "glob", @@ -6178,7 +6178,7 @@ dependencies = [ [[package]] name = "tauri-plugin-global-shortcut" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "global-hotkey", "log", @@ -6191,7 +6191,7 @@ dependencies = [ [[package]] name = "tauri-plugin-http" -version = "2.0.0-beta.6" +version = "2.0.0-beta.7" dependencies = [ "data-url", "http", @@ -6210,7 +6210,7 @@ dependencies = [ [[package]] name = "tauri-plugin-localhost" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "http", "log", @@ -6223,7 +6223,7 @@ dependencies = [ [[package]] name = "tauri-plugin-log" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "android_logger", "byte-unit", @@ -6242,7 +6242,7 @@ dependencies = [ [[package]] name = "tauri-plugin-nfc" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "log", "serde", @@ -6255,7 +6255,7 @@ dependencies = [ [[package]] name = "tauri-plugin-notification" -version = "2.0.0-beta.4" +version = "2.0.0-beta.5" dependencies = [ "chrono", "color-backtrace", @@ -6282,7 +6282,7 @@ dependencies = [ [[package]] name = "tauri-plugin-os" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "gethostname", "log", @@ -6298,7 +6298,7 @@ dependencies = [ [[package]] name = "tauri-plugin-persisted-scope" -version = "2.0.0-beta.6" +version = "2.0.0-beta.7" dependencies = [ "aho-corasick", "bincode", @@ -6312,7 +6312,7 @@ dependencies = [ [[package]] name = "tauri-plugin-positioner" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "log", "serde", @@ -6325,7 +6325,7 @@ dependencies = [ [[package]] name = "tauri-plugin-process" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "tauri", "tauri-plugin", @@ -6333,7 +6333,7 @@ dependencies = [ [[package]] name = "tauri-plugin-shell" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "encoding_rs", "log", @@ -6351,7 +6351,7 @@ dependencies = [ [[package]] name = "tauri-plugin-single-instance" -version = "2.0.0-beta.6" +version = "2.0.0-beta.7" dependencies = [ "log", "semver", @@ -6365,7 +6365,7 @@ dependencies = [ [[package]] name = "tauri-plugin-sql" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "futures-core", "log", @@ -6381,7 +6381,7 @@ dependencies = [ [[package]] name = "tauri-plugin-store" -version = "2.0.0-beta.5" +version = "2.0.0-beta.6" dependencies = [ "dunce", "log", @@ -6394,7 +6394,7 @@ dependencies = [ [[package]] name = "tauri-plugin-stronghold" -version = "2.0.0-beta.3" +version = "2.0.0-beta.4" dependencies = [ "hex", "iota-crypto 0.23.1", @@ -6415,7 +6415,7 @@ dependencies = [ [[package]] name = "tauri-plugin-updater" -version = "2.0.0-beta.4" +version = "2.0.0-beta.5" dependencies = [ "base64 0.22.0", "dirs-next", @@ -6442,7 +6442,7 @@ dependencies = [ [[package]] name = "tauri-plugin-upload" -version = "2.0.0-beta.4" +version = "2.0.0-beta.5" dependencies = [ "futures-util", "log", @@ -6459,7 +6459,7 @@ dependencies = [ [[package]] name = "tauri-plugin-websocket" -version = "2.0.0-beta.4" +version = "2.0.0-beta.5" dependencies = [ "futures-util", "http", @@ -6476,7 +6476,7 @@ dependencies = [ [[package]] name = "tauri-plugin-window-state" -version = "2.0.0-beta.5" +version = "2.0.0-beta.6" dependencies = [ "bitflags 2.4.2", "log", diff --git a/plugins/positioner/src/ext.rs b/plugins/positioner/src/ext.rs index 36ec7f91..4688cd51 100644 --- a/plugins/positioner/src/ext.rs +++ b/plugins/positioner/src/ext.rs @@ -8,7 +8,7 @@ use crate::Tray; use serde_repr::Deserialize_repr; #[cfg(feature = "tray-icon")] use tauri::Manager; -use tauri::{PhysicalPosition, PhysicalSize, Result, Runtime, Window}; +use tauri::{PhysicalPosition, PhysicalSize, Result, Runtime, WebviewWindow, Window}; /// Well known window positions. #[derive(Debug, Deserialize_repr)] @@ -45,6 +45,11 @@ pub trait WindowExt { fn move_window(&self, position: Position) -> Result<()>; } +impl WindowExt for WebviewWindow { + fn move_window(&self, pos: Position) -> Result<()> { + self.as_ref().window().move_window(pos) + } +} impl WindowExt for Window { fn move_window(&self, pos: Position) -> Result<()> { use Position::*; diff --git a/plugins/window-state/src/cmd.rs b/plugins/window-state/src/cmd.rs index c88c95f3..99d41a82 100644 --- a/plugins/window-state/src/cmd.rs +++ b/plugins/window-state/src/cmd.rs @@ -26,8 +26,6 @@ pub async fn restore_state( .ok_or_else(|| format!("Invalid state flags bits: {}", flags))?; app.get_webview_window(&label) .ok_or_else(|| format!("Couldn't find window with label: {}", label))? - .as_ref() - .window() .restore_state(flags) .map_err(|e| e.to_string())?; Ok(()) diff --git a/plugins/window-state/src/lib.rs b/plugins/window-state/src/lib.rs index 75798a8f..c7145831 100644 --- a/plugins/window-state/src/lib.rs +++ b/plugins/window-state/src/lib.rs @@ -16,8 +16,8 @@ use bitflags::bitflags; use serde::{Deserialize, Serialize}; use tauri::{ plugin::{Builder as PluginBuilder, TauriPlugin}, - LogicalSize, Manager, Monitor, PhysicalPosition, PhysicalSize, RunEvent, Runtime, Window, - WindowEvent, + LogicalSize, Manager, Monitor, PhysicalPosition, PhysicalSize, RunEvent, Runtime, + WebviewWindow, Window, WindowEvent, }; use std::{ @@ -118,7 +118,7 @@ impl AppHandleExt for tauri::AppHandle { let mut state = cache.0.lock().unwrap(); for (label, s) in state.iter_mut() { if let Some(window) = self.get_webview_window(label) { - window.as_ref().window().update_state(s, flags)?; + window.update_state(s, flags)?; } } @@ -141,6 +141,11 @@ pub trait WindowExt { fn restore_state(&self, flags: StateFlags) -> tauri::Result<()>; } +impl WindowExt for WebviewWindow { + fn restore_state(&self, flags: StateFlags) -> tauri::Result<()> { + self.as_ref().window().restore_state(flags) + } +} impl WindowExt for Window { fn restore_state(&self, flags: StateFlags) -> tauri::Result<()> { let cache = self.state::(); @@ -246,6 +251,12 @@ trait WindowExtInternal { fn update_state(&self, state: &mut WindowState, flags: StateFlags) -> tauri::Result<()>; } +impl WindowExtInternal for WebviewWindow { + fn update_state(&self, state: &mut WindowState, flags: StateFlags) -> tauri::Result<()> { + self.as_ref().window().update_state(state, flags) + } +} + impl WindowExtInternal for Window { fn update_state(&self, state: &mut WindowState, flags: StateFlags) -> tauri::Result<()> { let is_maximized = match flags.intersects(StateFlags::MAXIMIZED | StateFlags::SIZE) {