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

pull/406/head
Lucas Fernandes Nogueira 2 years ago committed by GitHub
parent 0417b7ad60
commit 83abea3cae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,6 @@
---
"window": "minor:feat"
"window-js": "minor:feat"
---
Add `WebviewWindow.is_focused` and `WebviewWindow.getFocusedWindow` getters.

658
Cargo.lock generated

File diff suppressed because it is too large Load Diff

@ -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

@ -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);

@ -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,

Loading…
Cancel
Save