mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-10-12 22:47:08 +02:00
feat(positioner, window-state): impl WindowExt for WebviewWindow (#1283)
closes #1281
This commit is contained in:
1 parent
b4efa58d5d
commit
d9de5b19d1
5 files changed
+55
-35
No files matched your search
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
"positioner": "patch"
|
||||||
|
"window-state": "patch"
|
||||||
|
---
|
||||||
|
|
||||||
|
Implement `WindowExt` for `WebviewWindow`.
|
||||||
Generated
+29
-29
@@ -230,7 +230,7 @@ checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "api"
|
name = "api"
|
||||||
version = "2.0.0-beta.6"
|
version = "2.0.0-beta.7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -6043,7 +6043,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-authenticator"
|
name = "tauri-plugin-authenticator"
|
||||||
version = "2.0.0-beta.4"
|
version = "2.0.0-beta.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"authenticator",
|
"authenticator",
|
||||||
"base64 0.22.0",
|
"base64 0.22.0",
|
||||||
@@ -6065,7 +6065,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-autostart"
|
name = "tauri-plugin-autostart"
|
||||||
version = "2.0.0-beta.4"
|
version = "2.0.0-beta.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"auto-launch",
|
"auto-launch",
|
||||||
"log",
|
"log",
|
||||||
@@ -6078,7 +6078,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-barcode-scanner"
|
name = "tauri-plugin-barcode-scanner"
|
||||||
version = "2.0.0-beta.4"
|
version = "2.0.0-beta.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -6090,7 +6090,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-biometric"
|
name = "tauri-plugin-biometric"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -6103,7 +6103,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-cli"
|
name = "tauri-plugin-cli"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
"log",
|
"log",
|
||||||
@@ -6116,7 +6116,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-clipboard-manager"
|
name = "tauri-plugin-clipboard-manager"
|
||||||
version = "2.1.0-beta.1"
|
version = "2.1.0-beta.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arboard",
|
"arboard",
|
||||||
"image",
|
"image",
|
||||||
@@ -6130,7 +6130,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-deep-link"
|
name = "tauri-plugin-deep-link"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -6143,7 +6143,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-dialog"
|
name = "tauri-plugin-dialog"
|
||||||
version = "2.0.0-beta.6"
|
version = "2.0.0-beta.7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dunce",
|
"dunce",
|
||||||
"log",
|
"log",
|
||||||
@@ -6159,7 +6159,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-fs"
|
name = "tauri-plugin-fs"
|
||||||
version = "2.0.0-beta.6"
|
version = "2.0.0-beta.7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"glob",
|
"glob",
|
||||||
@@ -6178,7 +6178,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-global-shortcut"
|
name = "tauri-plugin-global-shortcut"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"global-hotkey",
|
"global-hotkey",
|
||||||
"log",
|
"log",
|
||||||
@@ -6191,7 +6191,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-http"
|
name = "tauri-plugin-http"
|
||||||
version = "2.0.0-beta.6"
|
version = "2.0.0-beta.7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"data-url",
|
"data-url",
|
||||||
"http",
|
"http",
|
||||||
@@ -6210,7 +6210,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-localhost"
|
name = "tauri-plugin-localhost"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"http",
|
"http",
|
||||||
"log",
|
"log",
|
||||||
@@ -6223,7 +6223,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-log"
|
name = "tauri-plugin-log"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"android_logger",
|
"android_logger",
|
||||||
"byte-unit",
|
"byte-unit",
|
||||||
@@ -6242,7 +6242,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-nfc"
|
name = "tauri-plugin-nfc"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -6255,7 +6255,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-notification"
|
name = "tauri-plugin-notification"
|
||||||
version = "2.0.0-beta.4"
|
version = "2.0.0-beta.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"color-backtrace",
|
"color-backtrace",
|
||||||
@@ -6282,7 +6282,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-os"
|
name = "tauri-plugin-os"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"gethostname",
|
"gethostname",
|
||||||
"log",
|
"log",
|
||||||
@@ -6298,7 +6298,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-persisted-scope"
|
name = "tauri-plugin-persisted-scope"
|
||||||
version = "2.0.0-beta.6"
|
version = "2.0.0-beta.7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aho-corasick",
|
"aho-corasick",
|
||||||
"bincode",
|
"bincode",
|
||||||
@@ -6312,7 +6312,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-positioner"
|
name = "tauri-plugin-positioner"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -6325,7 +6325,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-process"
|
name = "tauri-plugin-process"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"tauri",
|
"tauri",
|
||||||
"tauri-plugin",
|
"tauri-plugin",
|
||||||
@@ -6333,7 +6333,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-shell"
|
name = "tauri-plugin-shell"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"encoding_rs",
|
"encoding_rs",
|
||||||
"log",
|
"log",
|
||||||
@@ -6351,7 +6351,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-single-instance"
|
name = "tauri-plugin-single-instance"
|
||||||
version = "2.0.0-beta.6"
|
version = "2.0.0-beta.7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"semver",
|
"semver",
|
||||||
@@ -6365,7 +6365,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-sql"
|
name = "tauri-plugin-sql"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"log",
|
"log",
|
||||||
@@ -6381,7 +6381,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-store"
|
name = "tauri-plugin-store"
|
||||||
version = "2.0.0-beta.5"
|
version = "2.0.0-beta.6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dunce",
|
"dunce",
|
||||||
"log",
|
"log",
|
||||||
@@ -6394,7 +6394,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-stronghold"
|
name = "tauri-plugin-stronghold"
|
||||||
version = "2.0.0-beta.3"
|
version = "2.0.0-beta.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"hex",
|
"hex",
|
||||||
"iota-crypto 0.23.1",
|
"iota-crypto 0.23.1",
|
||||||
@@ -6415,7 +6415,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-updater"
|
name = "tauri-plugin-updater"
|
||||||
version = "2.0.0-beta.4"
|
version = "2.0.0-beta.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.22.0",
|
"base64 0.22.0",
|
||||||
"dirs-next",
|
"dirs-next",
|
||||||
@@ -6442,7 +6442,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-upload"
|
name = "tauri-plugin-upload"
|
||||||
version = "2.0.0-beta.4"
|
version = "2.0.0-beta.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"log",
|
"log",
|
||||||
@@ -6459,7 +6459,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-websocket"
|
name = "tauri-plugin-websocket"
|
||||||
version = "2.0.0-beta.4"
|
version = "2.0.0-beta.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"http",
|
"http",
|
||||||
@@ -6476,7 +6476,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-plugin-window-state"
|
name = "tauri-plugin-window-state"
|
||||||
version = "2.0.0-beta.5"
|
version = "2.0.0-beta.6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.4.2",
|
"bitflags 2.4.2",
|
||||||
"log",
|
"log",
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use crate::Tray;
|
|||||||
use serde_repr::Deserialize_repr;
|
use serde_repr::Deserialize_repr;
|
||||||
#[cfg(feature = "tray-icon")]
|
#[cfg(feature = "tray-icon")]
|
||||||
use tauri::Manager;
|
use tauri::Manager;
|
||||||
use tauri::{PhysicalPosition, PhysicalSize, Result, Runtime, Window};
|
use tauri::{PhysicalPosition, PhysicalSize, Result, Runtime, WebviewWindow, Window};
|
||||||
|
|
||||||
/// Well known window positions.
|
/// Well known window positions.
|
||||||
#[derive(Debug, Deserialize_repr)]
|
#[derive(Debug, Deserialize_repr)]
|
||||||
@@ -45,6 +45,11 @@ pub trait WindowExt {
|
|||||||
fn move_window(&self, position: Position) -> Result<()>;
|
fn move_window(&self, position: Position) -> Result<()>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<R: Runtime> WindowExt for WebviewWindow<R> {
|
||||||
|
fn move_window(&self, pos: Position) -> Result<()> {
|
||||||
|
self.as_ref().window().move_window(pos)
|
||||||
|
}
|
||||||
|
}
|
||||||
impl<R: Runtime> WindowExt for Window<R> {
|
impl<R: Runtime> WindowExt for Window<R> {
|
||||||
fn move_window(&self, pos: Position) -> Result<()> {
|
fn move_window(&self, pos: Position) -> Result<()> {
|
||||||
use Position::*;
|
use Position::*;
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ pub async fn restore_state<R: Runtime>(
|
|||||||
.ok_or_else(|| format!("Invalid state flags bits: {}", flags))?;
|
.ok_or_else(|| format!("Invalid state flags bits: {}", flags))?;
|
||||||
app.get_webview_window(&label)
|
app.get_webview_window(&label)
|
||||||
.ok_or_else(|| format!("Couldn't find window with label: {}", label))?
|
.ok_or_else(|| format!("Couldn't find window with label: {}", label))?
|
||||||
.as_ref()
|
|
||||||
.window()
|
|
||||||
.restore_state(flags)
|
.restore_state(flags)
|
||||||
.map_err(|e| e.to_string())?;
|
.map_err(|e| e.to_string())?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ use bitflags::bitflags;
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use tauri::{
|
use tauri::{
|
||||||
plugin::{Builder as PluginBuilder, TauriPlugin},
|
plugin::{Builder as PluginBuilder, TauriPlugin},
|
||||||
LogicalSize, Manager, Monitor, PhysicalPosition, PhysicalSize, RunEvent, Runtime, Window,
|
LogicalSize, Manager, Monitor, PhysicalPosition, PhysicalSize, RunEvent, Runtime,
|
||||||
WindowEvent,
|
WebviewWindow, Window, WindowEvent,
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
@@ -118,7 +118,7 @@ impl<R: Runtime> AppHandleExt for tauri::AppHandle<R> {
|
|||||||
let mut state = cache.0.lock().unwrap();
|
let mut state = cache.0.lock().unwrap();
|
||||||
for (label, s) in state.iter_mut() {
|
for (label, s) in state.iter_mut() {
|
||||||
if let Some(window) = self.get_webview_window(label) {
|
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<()>;
|
fn restore_state(&self, flags: StateFlags) -> tauri::Result<()>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<R: Runtime> WindowExt for WebviewWindow<R> {
|
||||||
|
fn restore_state(&self, flags: StateFlags) -> tauri::Result<()> {
|
||||||
|
self.as_ref().window().restore_state(flags)
|
||||||
|
}
|
||||||
|
}
|
||||||
impl<R: Runtime> WindowExt for Window<R> {
|
impl<R: Runtime> WindowExt for Window<R> {
|
||||||
fn restore_state(&self, flags: StateFlags) -> tauri::Result<()> {
|
fn restore_state(&self, flags: StateFlags) -> tauri::Result<()> {
|
||||||
let cache = self.state::<WindowStateCache>();
|
let cache = self.state::<WindowStateCache>();
|
||||||
@@ -246,6 +251,12 @@ trait WindowExtInternal {
|
|||||||
fn update_state(&self, state: &mut WindowState, flags: StateFlags) -> tauri::Result<()>;
|
fn update_state(&self, state: &mut WindowState, flags: StateFlags) -> tauri::Result<()>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<R: Runtime> WindowExtInternal for WebviewWindow<R> {
|
||||||
|
fn update_state(&self, state: &mut WindowState, flags: StateFlags) -> tauri::Result<()> {
|
||||||
|
self.as_ref().window().update_state(state, flags)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<R: Runtime> WindowExtInternal for Window<R> {
|
impl<R: Runtime> WindowExtInternal for Window<R> {
|
||||||
fn update_state(&self, state: &mut WindowState, flags: StateFlags) -> tauri::Result<()> {
|
fn update_state(&self, state: &mut WindowState, flags: StateFlags) -> tauri::Result<()> {
|
||||||
let is_maximized = match flags.intersects(StateFlags::MAXIMIZED | StateFlags::SIZE) {
|
let is_maximized = match flags.intersects(StateFlags::MAXIMIZED | StateFlags::SIZE) {
|
||||||
|
|||||||
Reference in new issue
Block a user