mirror of
https://github.com/tauri-apps/tauri.git
synced 2024-11-30 10:31:45 +03:00
feat(core): add window_class name API on Windows (#11469)
* On Windows, set name of Window Class, closes #7498 allow to customize it instead of current value hard coded "Window Class" * feat(windows): add window_classname, closes #7498 allow to customize the window class name instead of current value hard coded "Window Class" * feat: add window_classname, closes #7498 * add changes file * Update core/tauri-config-schema/schema.json * Update tooling/cli/schema.json * missing pieces after merge * clippy --------- Co-authored-by: Géraud-Loup <47665233+geraudloup@users.noreply.github.com> Co-authored-by: Lucas Nogueira <lucas@tauri.app>
This commit is contained in:
parent
1b6b2cfaa1
commit
2a75c64b54
5
.changes/window-class-name-config-api.md
Normal file
5
.changes/window-class-name-config-api.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
"@tauri-apps/api": 'minor:feat'
|
||||
---
|
||||
|
||||
Added `windowClassname` option, when constructing a `Webview` or `WebviewWindow`, to specify the name of the window class on Windows.
|
6
.changes/window-class-name-config.md
Normal file
6
.changes/window-class-name-config.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
"tauri": 'minor:feat'
|
||||
"tauri-utils": 'minor:feat'
|
||||
---
|
||||
|
||||
Added `app > windows > windowClassname` config option to specify the name of the window class on Windows.
|
7
.changes/window-class-name.md
Normal file
7
.changes/window-class-name.md
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
"tauri": 'minor:feat'
|
||||
"tauri-runtime-wry": 'minor:feat'
|
||||
"tauri-runtime": 'minor:feat'
|
||||
---
|
||||
|
||||
Added `WindowBuilder/WebviewWindowBuilder::window_classname` method to specify the name of the window class on Windows.
|
@ -397,6 +397,13 @@
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"windowClassname": {
|
||||
"description": "The name of the window class created on Windows to create the window. **Windows only**.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"theme": {
|
||||
"description": "The initial window theme. Defaults to the system theme. Only implemented on Windows and macOS 10.14+.",
|
||||
"anyOf": [
|
||||
|
@ -763,6 +763,11 @@ impl WindowBuilder for WindowBuilderWrapper {
|
||||
|
||||
builder = builder.title("Tauri App");
|
||||
|
||||
#[cfg(windows)]
|
||||
{
|
||||
builder = builder.window_classname("Tauri Window");
|
||||
}
|
||||
|
||||
builder
|
||||
}
|
||||
|
||||
@ -846,6 +851,10 @@ impl WindowBuilder for WindowBuilderWrapper {
|
||||
if config.center {
|
||||
window = window.center();
|
||||
}
|
||||
|
||||
if let Some(window_classname) = &config.window_classname {
|
||||
window = window.window_classname(window_classname);
|
||||
}
|
||||
}
|
||||
|
||||
window
|
||||
@ -1106,6 +1115,16 @@ impl WindowBuilder for WindowBuilderWrapper {
|
||||
_ => Theme::Light,
|
||||
})
|
||||
}
|
||||
|
||||
#[cfg(windows)]
|
||||
fn window_classname<S: Into<String>>(mut self, window_classname: S) -> Self {
|
||||
self.inner = self.inner.with_window_classname(window_classname);
|
||||
self
|
||||
}
|
||||
#[cfg(not(windows))]
|
||||
fn window_classname<S: Into<String>>(self, _window_classname: S) -> Self {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(
|
||||
|
@ -438,6 +438,10 @@ pub trait WindowBuilder: WindowBuilderBase {
|
||||
fn has_icon(&self) -> bool;
|
||||
|
||||
fn get_theme(&self) -> Option<Theme>;
|
||||
|
||||
/// Sets custom name for Windows' window class. **Windows only**.
|
||||
#[must_use]
|
||||
fn window_classname<S: Into<String>>(self, window_classname: S) -> Self;
|
||||
}
|
||||
|
||||
/// A window that has yet to be built.
|
||||
|
@ -397,6 +397,13 @@
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"windowClassname": {
|
||||
"description": "The name of the window class created on Windows to create the window. **Windows only**.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"theme": {
|
||||
"description": "The initial window theme. Defaults to the system theme. Only implemented on Windows and macOS 10.14+.",
|
||||
"anyOf": [
|
||||
|
@ -1429,6 +1429,8 @@ pub struct WindowConfig {
|
||||
/// If `true`, hides the window icon from the taskbar on Windows and Linux.
|
||||
#[serde(default, alias = "skip-taskbar")]
|
||||
pub skip_taskbar: bool,
|
||||
/// The name of the window class created on Windows to create the window. **Windows only**.
|
||||
pub window_classname: Option<String>,
|
||||
/// The initial window theme. Defaults to the system theme. Only implemented on Windows and macOS 10.14+.
|
||||
pub theme: Option<crate::Theme>,
|
||||
/// The style of the macOS title bar.
|
||||
@ -1566,6 +1568,7 @@ impl Default for WindowConfig {
|
||||
visible_on_all_workspaces: false,
|
||||
content_protected: false,
|
||||
skip_taskbar: false,
|
||||
window_classname: None,
|
||||
theme: None,
|
||||
title_bar_style: Default::default(),
|
||||
hidden_title: false,
|
||||
@ -2539,6 +2542,7 @@ mod build {
|
||||
let visible_on_all_workspaces = self.visible_on_all_workspaces;
|
||||
let content_protected = self.content_protected;
|
||||
let skip_taskbar = self.skip_taskbar;
|
||||
let window_classname = opt_str_lit(self.window_classname.as_ref());
|
||||
let theme = opt_lit(self.theme.as_ref());
|
||||
let title_bar_style = &self.title_bar_style;
|
||||
let hidden_title = self.hidden_title;
|
||||
@ -2587,6 +2591,7 @@ mod build {
|
||||
visible_on_all_workspaces,
|
||||
content_protected,
|
||||
skip_taskbar,
|
||||
window_classname,
|
||||
theme,
|
||||
title_bar_style,
|
||||
hidden_title,
|
||||
|
@ -421,6 +421,10 @@ impl WindowBuilder for MockWindowBuilder {
|
||||
self
|
||||
}
|
||||
|
||||
fn window_classname<S: Into<String>>(self, classname: S) -> Self {
|
||||
self
|
||||
}
|
||||
|
||||
fn shadow(self, enable: bool) -> Self {
|
||||
self
|
||||
}
|
||||
|
@ -571,6 +571,13 @@ impl<'a, R: Runtime, M: Manager<R>> WebviewWindowBuilder<'a, R, M> {
|
||||
self
|
||||
}
|
||||
|
||||
/// Sets custom name for Windows' window class. **Windows only**.
|
||||
#[must_use]
|
||||
pub fn window_classname<S: Into<String>>(mut self, classname: S) -> Self {
|
||||
self.window_builder = self.window_builder.window_classname(classname);
|
||||
self
|
||||
}
|
||||
|
||||
/// Sets whether or not the window has shadow.
|
||||
///
|
||||
/// ## Platform-specific
|
||||
|
@ -645,6 +645,13 @@ impl<'a, R: Runtime, M: Manager<R>> WindowBuilder<'a, R, M> {
|
||||
self
|
||||
}
|
||||
|
||||
/// Sets custom name for Windows' window class. **Windows only**.
|
||||
#[must_use]
|
||||
pub fn window_classname<S: Into<String>>(mut self, classname: S) -> Self {
|
||||
self.window_builder = self.window_builder.window_classname(classname);
|
||||
self
|
||||
}
|
||||
|
||||
/// Sets whether or not the window has shadow.
|
||||
///
|
||||
/// ## Platform-specific
|
||||
|
Loading…
Reference in New Issue
Block a user