nixfiles/home-manager/data/chromium-dark.patch

35 lines
1.2 KiB
Diff

diff --git a/ui/gtk/native_theme_gtk.cc b/ui/gtk/native_theme_gtk.cc
index 4afa399..fbaaf06e 100644
--- a/ui/gtk/native_theme_gtk.cc
+++ b/ui/gtk/native_theme_gtk.cc
@@ -116,6 +116,13 @@
ui::ColorProviderManager::Get().AppendColorProviderInitializer(
base::BindRepeating(AddGtkNativeCoreColorMixer));
+ // Add the web native theme as an observer to stay in sync with dark mode,
+ // high contrast, and preferred color scheme changes.
+ color_scheme_observer_ =
+ std::make_unique<NativeTheme::ColorSchemeNativeThemeObserver>(
+ NativeTheme::GetInstanceForWeb());
+ AddObserver(color_scheme_observer_.get());
+
OnThemeChanged(gtk_settings_get_default(), nullptr);
}
diff --git a/ui/gtk/native_theme_gtk.h b/ui/gtk/native_theme_gtk.h
index 876a738..ad3b88d41 100644
--- a/ui/gtk/native_theme_gtk.h
+++ b/ui/gtk/native_theme_gtk.h
@@ -93,6 +93,11 @@
mutable absl::optional<SkColor> color_cache_[kColorId_NumColors];
ScopedCssProvider theme_css_override_;
+
+ // Used to notify the web native theme of changes to dark mode, high
+ // contrast, and preferred color scheme.
+ std::unique_ptr<NativeTheme::ColorSchemeNativeThemeObserver>
+ color_scheme_observer_;
};
} // namespace gtk