feat: add {get|set}AccentColor on Windows (#47741)

* feat: add setAccentColor on Windows

* refactor: unify GetSystemAccentColor

* refactor: remove redundant parsing

* chore: fixup documentation

* Update docs/api/browser-window.md

Co-authored-by: Will Anderson <andersonw@dropbox.com>

* Update docs/api/base-window.md

Co-authored-by: Will Anderson <andersonw@dropbox.com>

---------

Co-authored-by: Will Anderson <andersonw@dropbox.com>
This commit is contained in:
Shelley Vohr 2025-08-01 22:29:02 +02:00 committed by GitHub
commit 5c98e3609f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 265 additions and 24 deletions

View file

@ -5,7 +5,6 @@
#include <iomanip>
#include <string_view>
#include <dwmapi.h>
#include <windows.devices.enumeration.h>
#include <wrl/client.h>
@ -84,14 +83,12 @@ std::string hexColorDWORDToRGBA(DWORD color) {
}
std::string SystemPreferences::GetAccentColor() {
DWORD color = 0;
BOOL opaque = FALSE;
std::optional<DWORD> color = GetSystemAccentColor();
if (FAILED(DwmGetColorizationColor(&color, &opaque))) {
if (!color.has_value())
return "";
}
return hexColorDWORDToRGBA(color);
return hexColorDWORDToRGBA(color.value());
}
std::string SystemPreferences::GetColor(gin_helper::ErrorThrower thrower,