feat(window): add is_focused API (#407)

This commit is contained in:
Lucas Fernandes Nogueira
2023-06-19 05:46:22 -07:00
committed by GitHub
parent 0417b7ad60
commit 83abea3cae
6 changed files with 382 additions and 327 deletions
+6
View File
@@ -0,0 +1,6 @@
---
"window": "minor:feat"
"window-js": "minor:feat"
---
Add `WebviewWindow.is_focused` and `WebviewWindow.getFocusedWindow` getters.
Generated
+334 -326
View File
File diff suppressed because it is too large Load Diff
+39
View File
@@ -563,6 +563,24 @@ class WindowManager extends WebviewWindowHandle {
});
}
/**
* Gets the window's current focus state.
* @example
* ```typescript
* import { appWindow } from '@tauri-apps/plugin-window';
* const focused = await appWindow.isFocused();
* ```
*
* @returns Whether the window is focused or not.
*
* @since 2.0.0
* */
async isFocused(): Promise<boolean> {
return window.__TAURI_INVOKE__("plugin:window|is_focused", {
label: this.label,
});
}
/**
* Gets the window's current decorated state.
* @example
@@ -1779,6 +1797,27 @@ class WebviewWindow extends WindowManager {
}
return null;
}
/**
* Gets the focused window.
* @example
* ```typescript
* import { WebviewWindow } from '@tauri-apps/plugin-window';
* const focusedWindow = WebviewWindow.getFocusedWindow();
* ```
*
* @returns The WebviewWindow instance to communicate with the webview or `undefined` if there is not any focused window.
*
* @since 1.4
*/
static async getFocusedWindow(): Promise<WebviewWindow | null> {
for (const w of getAll()) {
if (await w.isFocused()) {
return w;
}
}
return null;
}
}
/** The WebviewWindow for the current window. */
File diff suppressed because one or more lines are too long
+1
View File
@@ -112,6 +112,7 @@ getter!(outer_size, PhysicalSize<u32>);
getter!(is_fullscreen, bool);
getter!(is_minimized, bool);
getter!(is_maximized, bool);
getter!(is_focused, bool);
getter!(is_decorated, bool);
getter!(is_resizable, bool);
getter!(is_visible, bool);
+1
View File
@@ -40,6 +40,7 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
desktop_commands::is_fullscreen,
desktop_commands::is_minimized,
desktop_commands::is_maximized,
desktop_commands::is_focused,
desktop_commands::is_decorated,
desktop_commands::is_resizable,
desktop_commands::is_visible,