fix: preserve content when rebuilding appearance drawer

This commit is contained in:
Hojjat 2026-07-16 10:47:27 -06:00 • committed by Michael Murphy
parent 99cf076229
commit ab5dd5f43a
3 changed files with 18 additions and 1 deletions

View file

@ -153,6 +153,16 @@ impl Content {
}
}
pub fn preserve_from(&mut self, previous: &mut Content) {
self.font_config
.take_families_from(&mut previous.font_config);
self.icons_fetched = previous.icons_fetched;
self.icon_theme_active = previous.icon_theme_active;
self.icon_themes = std::mem::take(&mut previous.icon_themes);
self.icon_handles = std::mem::take(&mut previous.icon_handles);
}
pub fn update_font(
&mut self,
message: FontMessage,

View file

@ -94,6 +94,11 @@ impl Model {
self.font_filter.clear();
}
pub fn take_families_from(&mut self, other: &mut Model) {
self.interface_font_families = std::mem::take(&mut other.interface_font_families);
self.monospace_font_families = std::mem::take(&mut other.monospace_font_families);
}
pub fn font_loaded(
&mut self,
mono: Vec<Arc<str>>,

View file

@ -200,7 +200,9 @@ impl Page {
Message::DrawerOpen(context_view) => {
self.context_view = Some(context_view);
self.drawer = drawer::Content::from(&self.theme_manager);
let mut previous =
std::mem::replace(&mut self.drawer, drawer::Content::from(&self.theme_manager));
self.drawer.preserve_from(&mut previous);
tasks.push(cosmic::task::message(
crate::app::Message::OpenContextDrawer(self.entity),
));