diff --git a/src/ipc/server/mod.rs b/src/ipc/server/mod.rs index 9ef736a..463e8fa 100644 --- a/src/ipc/server/mod.rs +++ b/src/ipc/server/mod.rs @@ -143,7 +143,7 @@ impl Ipc { } Command::LoadCss { path } => { if path.exists() { - load_css(path); + load_css(path, application.clone()); Response::Ok } else { Response::error("File not found") diff --git a/src/main.rs b/src/main.rs index 2d1699c..205315d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -179,7 +179,7 @@ impl Ironbar { ); if style_path.exists() { - load_css(style_path); + load_css(style_path, app.clone()); } let (tx, rx) = mpsc::channel(); diff --git a/src/style.rs b/src/style.rs index b27836e..2bf8ed9 100644 --- a/src/style.rs +++ b/src/style.rs @@ -1,8 +1,8 @@ use crate::{glib_recv_mpsc, spawn, try_send}; use color_eyre::{Help, Report}; use gtk::ffi::GTK_STYLE_PROVIDER_PRIORITY_USER; -use gtk::prelude::CssProviderExt; -use gtk::{gdk, gio, CssProvider, StyleContext}; +use gtk::prelude::*; +use gtk::{gdk, gio, Application, CssProvider, StyleContext}; use notify::event::ModifyKind; use notify::{recommended_watcher, Event, EventKind, RecursiveMode, Result, Watcher}; use std::env; @@ -17,7 +17,7 @@ use tracing::{debug, error, info}; /// /// Installs a file watcher and reloads CSS when /// write changes are detected on the file. -pub fn load_css(style_path: PathBuf) { +pub fn load_css(style_path: PathBuf, application: Application) { // file watcher requires absolute path let style_path = if style_path.is_absolute() { style_path @@ -80,6 +80,10 @@ pub fn load_css(style_path: PathBuf) { .suggestion("Check the CSS file for errors") .suggestion("GTK CSS uses a subset of the full CSS spec and many properties are not available. Ensure you are not using any unsupported property.") ); + } else { + for win in application.windows() { + win.queue_draw(); + } } }); }