bread-theme: add libadwaita components + fix slider/chip theming gaps
New `adw` feature (gated separately from `gtk`, since AdwApplicationWindow isn't compatible with gtk4-layer-shell — the five panel/launcher apps stay on plain `gtk`, only breadman/breadhelp-style plain-window apps want this): preferences_group/toggle_row/spin_row/action_row/preferences_page, wrapping libadwaita's PreferencesGroup/SwitchRow/SpinRow/ActionRow/PreferencesPage. adw::init() also forces dark color-scheme, since bread-theme's whole design is a fixed dark base regardless of system GTK preference. These directly target defects a design critique found: hand-rolled switch+label rows with no intrinsic width (breadman/settings' ~1400px stretched toggles) and spinners stranded far from their label — both just don't happen when the row is a real AdwSwitchRow/AdwSpinRow instead of a box assembled from scratch. Also, two shared-stylesheet fixes usable by every app immediately, gtk feature only: - `scale` (slider) had no rule at all, so every volume/brightness slider showed GTK's own default blue instead of the palette accent — the same critique flagged breadbar's control-panel sliders contradicting its own on-brand OSD fill two clicks away. - A new `chip()`/`set_chip_active()` helper in gtk.rs uses the existing (already-tokenized, already-defined) `.chip`/`.pill` stylesheet rule instead of each app hand-rolling its own filter-chip CSS — which is how breadclip/breadpad/breadman ended up with three different, mutually disagreeing pill fills for what's supposed to be one shared component.
This commit is contained in:
parent
6eb3479529
commit
e898535bb4
5 changed files with 155 additions and 0 deletions
|
|
@ -13,11 +13,24 @@ serde = { workspace = true }
|
|||
serde_json = { workspace = true }
|
||||
dirs = { workspace = true }
|
||||
gtk4 = { version = "0.11", features = ["v4_12"], optional = true }
|
||||
# Rust bindings for libadwaita (GNOME's widget library on top of GTK4) — the
|
||||
# actual source of the modern GNOME look (grouped preference rows, real
|
||||
# toggle/spin rows, view switchers), not just a CSS reskin of plain GTK4
|
||||
# widgets. `v1_7` for ToggleGroup (used for tab-row-style pickers); the
|
||||
# system library only needs to be >= that (this machine has 1.9.2).
|
||||
libadwaita = { version = "0.9", features = ["v1_7"], optional = true }
|
||||
|
||||
[features]
|
||||
# Enable GTK4 CSS provider helpers (breadbar, breadbox, breadpad use this).
|
||||
# bread (daemon) and breadcrumbs (CLI) depend on this crate without the feature.
|
||||
gtk = ["dep:gtk4"]
|
||||
# Composite libadwaita-based widgets (bread_theme::adw) — separate from `gtk`
|
||||
# because libadwaita's own top-level window chrome (AdwApplicationWindow)
|
||||
# isn't compatible with gtk4-layer-shell surfaces, so the five layer-shell
|
||||
# apps (breadbar, breadbox, breadclip, breadsearch, breadpad) only want
|
||||
# plain CSS, not this. Apps with an ordinary top-level window (breadman,
|
||||
# breadhelp) want both.
|
||||
adw = ["gtk", "dep:libadwaita"]
|
||||
|
||||
# The generator CLI. It only touches the gtk-free lib API (render + write), so
|
||||
# it builds without the gtk feature and stays light.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue