From dc3129aee2806823bdad87785f7ef80651d5245c Mon Sep 17 00:00:00 2001 From: elkowar <5300871+elkowar@users.noreply.github.com> Date: Sat, 29 Jul 2023 21:53:46 +0200 Subject: [PATCH] Add :css property to widgets --- crates/eww/src/widgets/widget_definitions.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crates/eww/src/widgets/widget_definitions.rs b/crates/eww/src/widgets/widget_definitions.rs index a142940..1a0d691 100644 --- a/crates/eww/src/widgets/widget_definitions.rs +++ b/crates/eww/src/widgets/widget_definitions.rs @@ -142,6 +142,7 @@ pub(super) fn resolve_widget_attrs(bargs: &mut BuilderArgs, gtk_widget: >k::Wi } let css_provider = gtk::CssProvider::new(); + let css_provider2 = css_provider.clone(); let visible_result: Result<_> = try { let visible_expr = bargs.widget_use.attrs.attrs.get("visible").map(|x| x.value.as_simplexpr()).transpose()?; @@ -207,6 +208,12 @@ pub(super) fn resolve_widget_attrs(bargs: &mut BuilderArgs, gtk_widget: >k::Wi css_provider.load_from_data(format!("* {{ {} }}", style).as_bytes())?; gtk_widget.style_context().add_provider(&css_provider, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION) }, + // @prop css - scss code applied to the widget, i.e.: `button {color: red;}` + prop(css: as_string) { + gtk_widget.reset_style(); + css_provider2.load_from_data(grass::from_string(css, &grass::Options::default())?.as_bytes())?; + gtk_widget.style_context().add_provider(&css_provider2, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION) + }, }); Ok(()) }