diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/environment.rs | 10 | ||||
| -rw-r--r-- | src/main.rs | 8 | ||||
| -rw-r--r-- | src/types.rs | 1 |
3 files changed, 14 insertions, 5 deletions
diff --git a/src/environment.rs b/src/environment.rs index 8efc425..33c316d 100644 --- a/src/environment.rs +++ b/src/environment.rs @@ -49,9 +49,11 @@ fn platform_specific_config_dir() -> PathBuf { #[cfg(target_os = "macos")] #[inline(always)] fn xdg_config_dir() -> Option<PathBuf> { - let config_dir = xdg::BaseDirectories::with_prefix("iced-builder") - .ok() - .and_then(|xdg| xdg.find_config_file(CONFIG_FILE_NAME))?; + let config_path = xdg::BaseDirectories::new().config_home?; + let config_dir = config_path.join("iced-builder"); - config_dir.parent().map(|p| p.to_path_buf()) + config_dir + .join(CONFIG_FILE_NAME) + .is_file() + .then_some(config_dir) } diff --git a/src/main.rs b/src/main.rs index 67d564d..c6812b1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -205,6 +205,9 @@ impl IcedBuilder { return self.update(ConfigChangeType::SelectedTheme.into()); } + Message::SystemThemeChanged(theme) => { + Theme::update_system_theme(theme); + } Message::CopyCode => { return clipboard::write(self.editor_content.text()); } @@ -482,7 +485,10 @@ impl IcedBuilder { let window_events = window::events().map(|(_id, event)| Message::WindowEvent(event)); - Subscription::batch([keyboard, window_events]) + let system_theme = + Theme::subscription().map(Message::SystemThemeChanged); + + Subscription::batch([keyboard, window_events, system_theme]) } fn view(&self) -> Element<'_, Message> { diff --git a/src/types.rs b/src/types.rs index 9a81139..d998d61 100644 --- a/src/types.rs +++ b/src/types.rs @@ -25,6 +25,7 @@ pub enum Message { ConfigWrite(Result<(), Error>), SaveConfigChanges(ConfigChangeType), SwitchTheme(Event<Theme>), + SystemThemeChanged(Theme), CopyCode, SwitchPane(DesignerPane), EditorAction(text_editor::Action), |
