diff --git a/native/src/widget/pane_grid/content.rs b/native/src/widget/pane_grid/content.rs index 39a92186..1d339b75 100644 --- a/native/src/widget/pane_grid/content.rs +++ b/native/src/widget/pane_grid/content.rs @@ -183,6 +183,10 @@ where } pub(crate) fn hash_layout(&self, state: &mut Hasher) { + if let Some(title_bar) = &self.title_bar { + title_bar.hash_layout(state); + } + self.body.hash_layout(state); } diff --git a/native/src/widget/pane_grid/title_bar.rs b/native/src/widget/pane_grid/title_bar.rs index 1d4a32e9..9dfb9ae4 100644 --- a/native/src/widget/pane_grid/title_bar.rs +++ b/native/src/widget/pane_grid/title_bar.rs @@ -1,6 +1,8 @@ use crate::layout; use crate::pane_grid; -use crate::{Clipboard, Element, Event, Layout, Point, Rectangle, Size}; +use crate::{ + Clipboard, Element, Event, Hasher, Layout, Point, Rectangle, Size, +}; /// The title bar of a [`Pane`]. /// @@ -176,6 +178,14 @@ where } } + pub(crate) fn hash_layout(&self, hasher: &mut Hasher) { + use std::hash::Hash; + + self.title.hash(hasher); + self.title_size.hash(hasher); + self.padding.hash(hasher); + } + pub(crate) fn layout( &self, renderer: &Renderer, diff --git a/src/window/settings.rs b/src/window/settings.rs index 2046f2d9..7bc49ce1 100644 --- a/src/window/settings.rs +++ b/src/window/settings.rs @@ -18,6 +18,9 @@ pub struct Settings { /// Whether the window should have a border, a title bar, etc. or not. pub decorations: bool, + /// Whether the window should be transparent + pub transparent: bool, + /// The icon of the window. pub icon: Option, } @@ -30,6 +33,7 @@ impl Default for Settings { max_size: None, resizable: true, decorations: true, + transparent: false, icon: None, } } @@ -44,6 +48,7 @@ impl From for iced_winit::settings::Window { max_size: settings.max_size, resizable: settings.resizable, decorations: settings.decorations, + transparent: settings.transparent, icon: settings.icon.map(Icon::into), platform_specific: Default::default(), } diff --git a/winit/src/settings.rs b/winit/src/settings.rs index 4155bf7d..92541e7d 100644 --- a/winit/src/settings.rs +++ b/winit/src/settings.rs @@ -45,6 +45,9 @@ pub struct Window { /// Whether the window should have a border, a title bar, etc. pub decorations: bool, + /// Whether the window should be transparent + pub transparent: bool, + /// The window icon, which is also usually used in the taskbar pub icon: Option, @@ -69,6 +72,7 @@ impl Window { .with_inner_size(winit::dpi::LogicalSize { width, height }) .with_resizable(self.resizable) .with_decorations(self.decorations) + .with_transparent(self.transparent) .with_window_icon(self.icon) .with_fullscreen(conversion::fullscreen(primary_monitor, mode)); @@ -103,6 +107,7 @@ impl Default for Window { max_size: None, resizable: true, decorations: true, + transparent: false, icon: None, platform_specific: Default::default(), }