gtk: support GTK 4.20 media queries in runtime & custom css (#9520)

This commit is contained in:
Mitchell Hashimoto
2025-12-10 12:55:25 -08:00
committed by GitHub
8 changed files with 51 additions and 43 deletions

View File

@@ -1583,7 +1583,7 @@ pub const Application = extern struct {
.dark;
log.debug("style manager changed scheme={}", .{scheme});
const priv = self.private();
const priv: *Private = self.private();
const core_app = priv.core_app;
core_app.colorSchemeEvent(self.rt(), scheme) catch |err| {
log.warn("error updating app color scheme err={}", .{err});
@@ -1596,6 +1596,26 @@ pub const Application = extern struct {
);
};
}
if (gtk_version.atLeast(4, 20, 0)) {
const gtk_scheme: gtk.InterfaceColorScheme = switch (scheme) {
.light => gtk.InterfaceColorScheme.light,
.dark => gtk.InterfaceColorScheme.dark,
};
var value = gobject.ext.Value.newFrom(gtk_scheme);
gobject.Object.setProperty(
priv.css_provider.as(gobject.Object),
"prefers-color-scheme",
&value,
);
for (priv.custom_css_providers.items) |css_provider| {
gobject.Object.setProperty(
css_provider.as(gobject.Object),
"prefers-color-scheme",
&value,
);
}
}
}
fn handleReloadConfig(