[gnome-text-editor] app: add .dark css class to windows in dark mode
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-text-editor] app: add .dark css class to windows in dark mode
- Date: Fri, 19 Nov 2021 23:11:14 +0000 (UTC)
commit ba7d16db211bbfcc9bd183840dca550217c4b749
Author: Christian Hergert <chergert redhat com>
Date: Fri Nov 19 15:10:18 2021 -0800
app: add .dark css class to windows in dark mode
If the system style scheme is dark, then add the .dark css class to the
window so that we can use it in CSS to adjust styling.
src/editor-application.c | 46 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 45 insertions(+), 1 deletion(-)
---
diff --git a/src/editor-application.c b/src/editor-application.c
index 25ae819..5b66aa4 100644
--- a/src/editor-application.c
+++ b/src/editor-application.c
@@ -141,6 +141,40 @@ style_variant_to_color_scheme (GValue *value,
return TRUE;
}
+static void
+update_dark (GtkWindow *window)
+{
+ AdwStyleManager *style_manager;
+
+ g_assert (GTK_IS_WINDOW (window));
+
+ style_manager = adw_style_manager_get_default ();
+
+ if (adw_style_manager_get_dark (style_manager))
+ gtk_widget_add_css_class (GTK_WIDGET (window), "dark");
+ else
+ gtk_widget_remove_css_class (GTK_WIDGET (window), "dark");
+}
+
+static void
+on_style_manager_notify_dark (EditorApplication *self,
+ GParamSpec *pspec,
+ AdwStyleManager *style_manager)
+{
+ g_assert (EDITOR_IS_APPLICATION (self));
+ g_assert (ADW_IS_STYLE_MANAGER (style_manager));
+
+ for (const GList *iter = gtk_application_get_windows (GTK_APPLICATION (self));
+ iter != NULL;
+ iter = iter->next)
+ {
+ GtkWindow *window = iter->data;
+
+ if (EDITOR_IS_WINDOW (window))
+ update_dark (window);
+ }
+}
+
static void
editor_application_startup (GApplication *application)
{
@@ -163,6 +197,12 @@ editor_application_startup (GApplication *application)
style_manager = adw_style_manager_get_default ();
+ g_signal_connect_object (style_manager,
+ "notify::dark",
+ G_CALLBACK (on_style_manager_notify_dark),
+ self,
+ G_CONNECT_SWAPPED);
+
g_settings_bind (self->settings, "auto-save-delay",
self->session, "auto-save-delay",
G_SETTINGS_BIND_GET);
@@ -229,9 +269,13 @@ editor_application_window_added (GtkApplication *application,
g_assert (EDITOR_IS_APPLICATION (application));
g_assert (GTK_IS_WINDOW (window));
+ if (EDITOR_IS_WINDOW (window))
+ {
+ update_dark (window);
#if DEVELOPMENT_BUILD
- gtk_widget_add_css_class (GTK_WIDGET (window), "devel");
+ gtk_widget_add_css_class (GTK_WIDGET (window), "devel");
#endif
+ }
GTK_APPLICATION_CLASS (editor_application_parent_class)->window_added (application, window);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]