浏览代码

feat(core): reimplement window initial focus flag, closes #5120 (#5338)

Lucas Fernandes Nogueira 2 年之前
父节点
当前提交
4036e15f5a

+ 7 - 0
.changes/focused.md

@@ -0,0 +1,7 @@
+---
+"tauri": minor
+"tauri-runtime": minor
+"tauri-runtime-wry": minor
+---
+
+Readd the option to create an unfocused window via the `focused` method. The `focus` function has been deprecated.

+ 3 - 4
core/tauri-runtime-wry/src/lib.rs

@@ -690,7 +690,7 @@ unsafe impl Send for WindowBuilderWrapper {}
 impl WindowBuilderBase for WindowBuilderWrapper {}
 impl WindowBuilder for WindowBuilderWrapper {
   fn new() -> Self {
-    Default::default()
+    Self::default().focused(true)
   }
 
   fn with_config(config: WindowConfig) -> Self {
@@ -803,9 +803,8 @@ impl WindowBuilder for WindowBuilderWrapper {
     self
   }
 
-  /// Deprecated since 0.1.4 (noop)
-  /// Windows is automatically focused when created.
-  fn focus(self) -> Self {
+  fn focused(mut self, focused: bool) -> Self {
+    self.inner = self.inner.with_focused(focused);
     self
   }
 

+ 2 - 2
core/tauri-runtime/src/webview.rs

@@ -133,9 +133,9 @@ pub trait WindowBuilder: WindowBuilderBase {
   #[must_use]
   fn fullscreen(self, fullscreen: bool) -> Self;
 
-  /// Whether the window will be initially hidden or focused.
+  /// Whether the window will be initially focused or not.
   #[must_use]
-  fn focus(self) -> Self;
+  fn focused(self, focused: bool) -> Self;
 
   /// Whether the window should be maximized upon creation.
   #[must_use]

+ 1 - 1
core/tauri-utils/src/config.rs

@@ -838,7 +838,7 @@ pub struct WindowConfig {
   /// Whether the window starts as fullscreen or not.
   #[serde(default)]
   pub fullscreen: bool,
-  /// Whether the window will be initially hidden or focused.
+  /// Whether the window will be initially focused or not.
   #[serde(default = "default_focus")]
   pub focus: bool,
   /// Whether the window is transparent or not.

+ 1 - 1
core/tauri/src/test/mock_runtime.rs

@@ -221,7 +221,7 @@ impl WindowBuilder for MockWindowBuilder {
     self
   }
 
-  fn focus(self) -> Self {
+  fn focused(self, focused: bool) -> Self {
     self
   }
 

+ 13 - 2
core/tauri/src/window.rs

@@ -328,10 +328,21 @@ impl<'a, R: Runtime> WindowBuilder<'a, R> {
     self
   }
 
-  /// Whether the window will be initially hidden or focused.
+  /// Sets the window to be initially focused.
   #[must_use]
+  #[deprecated(
+    since = "1.2.0",
+    note = "The window is automatically focused by default. This function Will be removed in 2.0.0. Use `focused` instead."
+  )]
   pub fn focus(mut self) -> Self {
-    self.window_builder = self.window_builder.focus();
+    self.window_builder = self.window_builder.focused(true);
+    self
+  }
+
+  /// Whether the window will be initially focused or not.
+  #[must_use]
+  pub fn focused(mut self, focused: bool) -> Self {
+    self.window_builder = self.window_builder.focused(focused);
     self
   }
 

+ 1 - 1
tooling/api/src/window.ts

@@ -2004,7 +2004,7 @@ interface WindowOptions {
   title?: string
   /** Whether the window is in fullscreen mode or not. */
   fullscreen?: boolean
-  /** Whether the window will be initially hidden or focused. */
+  /** Whether the window will be initially focused or not. */
   focus?: boolean
   /**
    * Whether the window is transparent or not.

+ 1 - 1
tooling/cli/schema.json

@@ -612,7 +612,7 @@
           "type": "boolean"
         },
         "focus": {
-          "description": "Whether the window will be initially hidden or focused.",
+          "description": "Whether the window will be initially focused or not.",
           "default": true,
           "type": "boolean"
         },