[epiphany/wip/exalm/dark: 3/3] Follow the system dark preference for reader mode
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/wip/exalm/dark: 3/3] Follow the system dark preference for reader mode
- Date: Sun, 21 Nov 2021 18:52:57 +0000 (UTC)
commit 17670187783b7563d97aead9ff00699892fc0565
Author: Alexander Mikhaylenko <alexm gnome org>
Date: Sun Nov 21 18:13:11 2021 +0500
Follow the system dark preference for reader mode
When it's available, hide the reader color scheme preference and follow the
system.
Change the setting description to reflect this.
Fixes https://gitlab.gnome.org/GNOME/epiphany/-/issues/1546
Part-of: <https://gitlab.gnome.org/GNOME/epiphany/-/merge_requests/1029>
data/org.gnome.epiphany.gschema.xml | 2 +-
embed/ephy-reader-handler.c | 13 ++++++++++---
embed/ephy-web-view.c | 33 ++++++++++++++++++++++++---------
src/preferences/prefs-appearance-page.c | 4 ++++
4 files changed, 39 insertions(+), 13 deletions(-)
---
diff --git a/data/org.gnome.epiphany.gschema.xml b/data/org.gnome.epiphany.gschema.xml
index 3e6cd82c3..9f2c32dcf 100644
--- a/data/org.gnome.epiphany.gschema.xml
+++ b/data/org.gnome.epiphany.gschema.xml
@@ -103,7 +103,7 @@
<key name="color-scheme" enum="org.gnome.Epiphany.EphyPrefsReaderColorScheme">
<default>'light'</default>
<summary>Reader mode color scheme.</summary>
- <description>Selects the style of colors for articles displayed in reader mode.
Possible values are “light” (dark text on light background) and “dark” (light text on dark
background).</description>
+ <description>Selects the style of colors for articles displayed in reader mode.
Possible values are “light” (dark text on light background) and “dark” (light text on dark background). This
setting is ignored on systems that provide a system-wide dark style preference, such as GNOME 42 and
newer.</description>
</key>
</schema>
<schema id="org.gnome.Epiphany.web">
diff --git a/embed/ephy-reader-handler.c b/embed/ephy-reader-handler.c
index 707497bdb..fb53436e6 100644
--- a/embed/ephy-reader-handler.c
+++ b/embed/ephy-reader-handler.c
@@ -163,6 +163,7 @@ readability_js_finish_cb (GObject *object,
const gchar *title;
const gchar *font_style;
const gchar *color_scheme;
+ HdyStyleManager *style_manager;
js_result = webkit_web_view_run_javascript_finish (web_view, result, &error);
if (!js_result) {
@@ -181,9 +182,15 @@ readability_js_finish_cb (GObject *object,
font_style = enum_nick (EPHY_TYPE_PREFS_READER_FONT_STYLE,
g_settings_get_enum (EPHY_SETTINGS_READER,
EPHY_PREFS_READER_FONT_STYLE));
- color_scheme = enum_nick (EPHY_TYPE_PREFS_READER_COLOR_SCHEME,
- g_settings_get_enum (EPHY_SETTINGS_READER,
- EPHY_PREFS_READER_COLOR_SCHEME));
+
+ style_manager = hdy_style_manager_get_default ();
+
+ if (hdy_style_manager_get_system_supports_color_schemes (style_manager))
+ color_scheme = hdy_style_manager_get_dark (style_manager) ? "dark" : "light";
+ else
+ color_scheme = enum_nick (EPHY_TYPE_PREFS_READER_COLOR_SCHEME,
+ g_settings_get_enum (EPHY_SETTINGS_READER,
+ EPHY_PREFS_READER_COLOR_SCHEME));
g_string_append_printf (html, "<style>%s</style>"
"<title>%s</title>"
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index 27bff9a12..b40c05157 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -2576,10 +2576,9 @@ enum_nick (GType enum_type,
}
static void
-reader_setting_changed_cb (GSettings *settings,
- gchar *key,
- EphyWebView *web_view)
+reader_setting_changed_cb (EphyWebView *web_view)
{
+ HdyStyleManager *style_manager;
const gchar *font_style;
const gchar *color_scheme;
gchar *js_snippet;
@@ -2588,11 +2587,17 @@ reader_setting_changed_cb (GSettings *settings,
return;
font_style = enum_nick (EPHY_TYPE_PREFS_READER_FONT_STYLE,
- g_settings_get_enum (settings,
+ g_settings_get_enum (EPHY_SETTINGS_READER,
EPHY_PREFS_READER_FONT_STYLE));
- color_scheme = enum_nick (EPHY_TYPE_PREFS_READER_COLOR_SCHEME,
- g_settings_get_enum (settings,
- EPHY_PREFS_READER_COLOR_SCHEME));
+
+ style_manager = hdy_style_manager_get_default ();
+
+ if (hdy_style_manager_get_system_supports_color_schemes (style_manager))
+ color_scheme = hdy_style_manager_get_dark (style_manager) ? "dark" : "light";
+ else
+ color_scheme = enum_nick (EPHY_TYPE_PREFS_READER_COLOR_SCHEME,
+ g_settings_get_enum (EPHY_SETTINGS_READER,
+ EPHY_PREFS_READER_COLOR_SCHEME));
js_snippet = g_strdup_printf ("document.body.className = '%s %s'",
font_style,
@@ -3979,11 +3984,21 @@ ephy_web_view_init (EphyWebView *web_view)
g_signal_connect_object (EPHY_SETTINGS_READER, "changed::" EPHY_PREFS_READER_FONT_STYLE,
G_CALLBACK (reader_setting_changed_cb),
- web_view, 0);
+ web_view, G_CONNECT_SWAPPED);
g_signal_connect_object (EPHY_SETTINGS_READER, "changed::" EPHY_PREFS_READER_COLOR_SCHEME,
G_CALLBACK (reader_setting_changed_cb),
- web_view, 0);
+ web_view, G_CONNECT_SWAPPED);
+
+ g_signal_connect_object (hdy_style_manager_get_default (),
+ "notify::system-supports-color-schemes",
+ G_CALLBACK (reader_setting_changed_cb),
+ web_view, G_CONNECT_SWAPPED);
+
+ g_signal_connect_object (hdy_style_manager_get_default (),
+ "notify::dark",
+ G_CALLBACK (reader_setting_changed_cb),
+ web_view, G_CONNECT_SWAPPED);
g_signal_connect (web_view, "decide-policy",
G_CALLBACK (decide_policy_cb),
diff --git a/src/preferences/prefs-appearance-page.c b/src/preferences/prefs-appearance-page.c
index 7b65ee54f..42193af00 100644
--- a/src/preferences/prefs-appearance-page.c
+++ b/src/preferences/prefs-appearance-page.c
@@ -348,6 +348,10 @@ setup_appearance_page (PrefsAppearancePage *appearance_page)
reader_font_style_set_mapping,
NULL, NULL);
+ g_object_bind_property (hdy_style_manager_get_default (), "system-supports-color-schemes",
+ appearance_page->reader_mode_color_scheme, "visible",
+ G_BINDING_SYNC_CREATE | G_BINDING_INVERT_BOOLEAN);
+
hdy_combo_row_set_for_enum (HDY_COMBO_ROW (appearance_page->reader_mode_color_scheme),
EPHY_TYPE_PREFS_READER_COLOR_SCHEME,
reader_color_scheme_get_name, NULL, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]