Skip to content

Commit aac4d66

Browse files
committed
fix: style won't show as expect only when sync once
1 parent cd5f4e4 commit aac4d66

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

iced_layershell/src/multi_window.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,8 @@ where
443443
.copied()
444444
.unwrap_or_else(IcedId::unique);
445445

446+
let is_first = self.window_manager.is_empty();
447+
446448
let window = self.window_manager.insert(
447449
iced_id,
448450
(width, height),
@@ -455,6 +457,20 @@ where
455457
self.system_theme,
456458
);
457459

460+
iced_debug::theme_changed(|| {
461+
if is_first {
462+
theme::Base::palette(window.state.theme())
463+
} else {
464+
None
465+
}
466+
});
467+
468+
let theme = window.state.theme().mode();
469+
if self.system_theme != theme {
470+
self.runtime
471+
.broadcast(iced_futures::subscription::Event::SystemThemeChanged(theme));
472+
}
473+
458474
self.user_interfaces.build(
459475
iced_id,
460476
user_interface::Cache::default(),

iced_layershell/src/multi_window/state.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ where
5757
.map(iced_core::theme::Base::mode)
5858
.unwrap_or_default();
5959
let default_theme = <P::Theme as iced_core::theme::Base>::default(system_theme);
60-
let style = application.style(&default_theme);
60+
let style = application.style(&theme.as_ref().unwrap_or(&default_theme));
6161

6262
let window_size = Size::new(width, height);
6363
let viewport = viewport(window_size, wayland_scale_factor, application_scale_factor);

iced_sessionlock/src/multi_window/state.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ where
4949
.map(iced_core::theme::Base::mode)
5050
.unwrap_or_default();
5151
let default_theme = <P::Theme as iced_core::theme::Base>::default(system_theme);
52-
let style = application.style(&default_theme);
52+
let style = application.style(&theme.as_ref().unwrap_or(&default_theme));
5353

5454
let window_size = Size::new(width, height);
5555
let viewport = viewport(window_size, wayland_scale_factor, application_scale_factor);

0 commit comments

Comments
 (0)