From 05930b7bc97bb20c9009c9e85c0134b26069ddbb Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Fri, 16 Jun 2023 12:11:20 +0300 Subject: [PATCH] views: win: Use black title bar with dark mode --- libcef/browser/views/window_view.cc | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/libcef/browser/views/window_view.cc b/libcef/browser/views/window_view.cc index af8d27fc8..8d5794cf0 100644 --- a/libcef/browser/views/window_view.cc +++ b/libcef/browser/views/window_view.cc @@ -22,7 +22,8 @@ #endif #if BUILDFLAG(IS_WIN) -#include "ui/display/screen.h" +#include +#include "base/win/windows_version.h" #include "ui/views/win/hwnd_util.h" #endif @@ -99,6 +100,25 @@ class NativeFrameViewEx : public views::NativeFrameView { return views::NativeFrameView::NonClientHitTest(point); } +#if BUILDFLAG(IS_WIN) + void OnThemeChanged() override { + views::NativeFrameView::OnThemeChanged(); + + // Value was 19 prior to Windows 10 20H1, according to + // https://stackoverflow.com/a/70693198 + const DWORD dwAttribute = + base::win::GetVersion() >= base::win::Version::WIN10_20H1 + ? DWMWA_USE_IMMERSIVE_DARK_MODE + : 19; + + // From BrowserFrameViewWin::SetSystemMicaTitlebarAttributes: + const BOOL dark_titlebar_enabled = GetNativeTheme()->ShouldUseDarkColors(); + DwmSetWindowAttribute(views::HWNDForWidget(widget_), dwAttribute, + &dark_titlebar_enabled, + sizeof(dark_titlebar_enabled)); + } +#endif + private: // Not owned by this object. views::Widget* widget_;