summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/environment.rs10
-rw-r--r--src/main.rs8
-rw-r--r--src/types.rs1
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),