Add support for inline styles and custom wm class per widget
This commit is contained in:
parent
0fca322bde
commit
7d24de48b5
2 changed files with 9 additions and 2 deletions
|
@ -86,8 +86,9 @@ impl App {
|
||||||
window_def.size = size.unwrap_or_else(|| window_def.size);
|
window_def.size = size.unwrap_or_else(|| window_def.size);
|
||||||
|
|
||||||
let window = gtk::Window::new(gtk::WindowType::Popup);
|
let window = gtk::Window::new(gtk::WindowType::Popup);
|
||||||
window.set_title("Eww");
|
window.set_title(&format!("Eww - {}", window_name));
|
||||||
window.set_wmclass("noswallow", "noswallow");
|
let wm_class_name = format!("eww-{}", window_name);
|
||||||
|
window.set_wmclass(&wm_class_name, &wm_class_name);
|
||||||
window.set_type_hint(gdk::WindowTypeHint::Dock);
|
window.set_type_hint(gdk::WindowTypeHint::Dock);
|
||||||
window.set_position(gtk::WindowPosition::Center);
|
window.set_position(gtk::WindowPosition::Center);
|
||||||
window.set_default_size(window_def.size.0, window_def.size.1);
|
window.set_default_size(window_def.size.0, window_def.size.1);
|
||||||
|
|
|
@ -31,6 +31,7 @@ pub(super) fn widget_to_gtk_widget(bargs: &mut BuilderArgs) -> Result<Option<gtk
|
||||||
|
|
||||||
/// attributes that apply to all widgets
|
/// attributes that apply to all widgets
|
||||||
pub(super) fn resolve_widget_attrs(bargs: &mut BuilderArgs, gtk_widget: >k::Widget) {
|
pub(super) fn resolve_widget_attrs(bargs: &mut BuilderArgs, gtk_widget: >k::Widget) {
|
||||||
|
let css_provider = gtk::CssProvider::new();
|
||||||
resolve_block!(bargs, gtk_widget, {
|
resolve_block!(bargs, gtk_widget, {
|
||||||
prop(class: as_string) { gtk_widget.get_style_context().add_class(&class) },
|
prop(class: as_string) { gtk_widget.get_style_context().add_class(&class) },
|
||||||
prop(valign: as_string) { gtk_widget.set_valign(parse_align(&valign)?) },
|
prop(valign: as_string) { gtk_widget.set_valign(parse_align(&valign)?) },
|
||||||
|
@ -42,6 +43,11 @@ pub(super) fn resolve_widget_attrs(bargs: &mut BuilderArgs, gtk_widget: >k::Wi
|
||||||
// TODO how do i call this only after the widget has been mapped? this is actually an issue,....
|
// TODO how do i call this only after the widget has been mapped? this is actually an issue,....
|
||||||
if visible { gtk_widget.show(); } else { gtk_widget.hide(); }
|
if visible { gtk_widget.show(); } else { gtk_widget.hide(); }
|
||||||
},
|
},
|
||||||
|
prop(style: as_string) {
|
||||||
|
gtk_widget.reset_style();
|
||||||
|
css_provider.load_from_data(format!("* {{ {} }}", style).as_bytes())?;
|
||||||
|
gtk_widget.get_style_context().add_provider(&css_provider, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue