summaryrefslogtreecommitdiff
path: root/mozilla-1158076-1.patch
diff options
context:
space:
mode:
Diffstat (limited to 'mozilla-1158076-1.patch')
-rw-r--r--mozilla-1158076-1.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/mozilla-1158076-1.patch b/mozilla-1158076-1.patch
new file mode 100644
index 0000000..1efa975
--- /dev/null
+++ b/mozilla-1158076-1.patch
@@ -0,0 +1,74 @@
+diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
+--- a/modules/libpref/init/all.js
++++ b/modules/libpref/init/all.js
+@@ -4733,16 +4733,18 @@ pref("gfx.content.always-paint", false);
+
+ #ifdef ANDROID
+ pref("gfx.apitrace.enabled",false);
+ #endif
+
+ #ifdef MOZ_X11
+ #ifdef MOZ_WIDGET_GTK
+ pref("gfx.xrender.enabled",false);
++pref("widget.chrome.allow-gtk-dark-theme", false);
++pref("widget.content.allow-gtk-dark-theme", false);
+ #endif
+ #endif
+
+ #ifdef XP_WIN
+ // Whether to disable the automatic detection and use of direct2d.
+ pref("gfx.direct2d.disabled", false);
+
+ // Whether to attempt to enable Direct2D regardless of automatic detection or
+diff --git a/widget/gtk/nsLookAndFeel.cpp b/widget/gtk/nsLookAndFeel.cpp
+--- a/widget/gtk/nsLookAndFeel.cpp
++++ b/widget/gtk/nsLookAndFeel.cpp
+@@ -1128,26 +1128,39 @@ nsLookAndFeel::Init()
+ GdkRGBA color;
+ GtkStyleContext *style;
+
+ // Gtk manages a screen's CSS in the settings object so we
+ // ask Gtk to create it explicitly. Otherwise we may end up
+ // with wrong color theme, see Bug 972382
+ GtkSettings *settings = gtk_settings_get_for_screen(gdk_screen_get_default());
+
+- // Disable dark theme because it interacts poorly with widget styling in
+- // web content (see bug 1216658).
++ // Dark themes interacts poorly with widget styling (see bug 1216658).
++ // We disable dark themes by default for all processes (chrome, web content)
++ // but allow user to overide it by prefs.
++ const gchar* dark_setting = "gtk-application-prefer-dark-theme";
++ gboolean darkThemeDefault;
++ g_object_get(settings, dark_setting, &darkThemeDefault, nullptr);
++
+ // To avoid triggering reload of theme settings unnecessarily, only set the
+ // setting when necessary.
+- const gchar* dark_setting = "gtk-application-prefer-dark-theme";
+- gboolean dark;
+- g_object_get(settings, dark_setting, &dark, nullptr);
+-
+- if (dark && !PR_GetEnv("MOZ_ALLOW_GTK_DARK_THEME")) {
+- g_object_set(settings, dark_setting, FALSE, nullptr);
++ if (darkThemeDefault) {
++ bool allowDarkTheme;
++ if (XRE_IsContentProcess()) {
++ allowDarkTheme =
++ mozilla::Preferences::GetBool("widget.content.allow-gtk-dark-theme",
++ false);
++ } else {
++ allowDarkTheme = (PR_GetEnv("MOZ_ALLOW_GTK_DARK_THEME") != nullptr) ||
++ mozilla::Preferences::GetBool("widget.chrome.allow-gtk-dark-theme",
++ false);
++ }
++ if (!allowDarkTheme) {
++ g_object_set(settings, dark_setting, FALSE, nullptr);
++ }
+ }
+
+ // Scrollbar colors
+ style = ClaimStyleContext(MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL);
+ gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color);
+ sMozScrollbar = GDK_RGBA_TO_NS_RGBA(color);
+ ReleaseStyleContext(style);
+
+
bgstack15