fix: convert system colors to device color space in systemPreferences (#28121)

This commit is contained in:
Samuel Attard 2021-03-12 23:31:08 -08:00 коммит произвёл GitHub
Родитель a442f11574
Коммит f73256651b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 18 добавлений и 3 удалений

Просмотреть файл

@ -26,9 +26,11 @@
#include "shell/browser/mac/dict_util.h"
#include "shell/browser/mac/electron_application.h"
#include "shell/browser/ui/cocoa/NSColor+Hex.h"
#include "shell/common/color_util.h"
#include "shell/common/gin_converters/gurl_converter.h"
#include "shell/common/gin_converters/value_converter.h"
#include "shell/common/process_util.h"
#include "skia/ext/skia_utils_mac.h"
#include "ui/native_theme/native_theme.h"
namespace gin {
@ -388,7 +390,8 @@ std::string SystemPreferences::GetAccentColor() {
if (@available(macOS 10.14, *))
sysColor = [NSColor controlAccentColor];
return base::SysNSStringToUTF8([sysColor RGBAValue]);
return ToRGBAHex(skia::NSSystemColorToSkColor(sysColor),
false /* include_hash */);
}
std::string SystemPreferences::GetSystemColor(gin_helper::ErrorThrower thrower,
@ -417,7 +420,7 @@ std::string SystemPreferences::GetSystemColor(gin_helper::ErrorThrower thrower,
return "";
}
return base::SysNSStringToUTF8([sysColor hexadecimalValue]);
return ToRGBHex(skia::NSSystemColorToSkColor(sysColor));
}
bool SystemPreferences::CanPromptTouchID() {
@ -575,7 +578,7 @@ std::string SystemPreferences::GetColor(gin_helper::ErrorThrower thrower,
}
if (sysColor)
return base::SysNSStringToUTF8([sysColor hexadecimalValue]);
return ToRGBHex(skia::NSSystemColorToSkColor(sysColor));
return "";
}

Просмотреть файл

@ -51,4 +51,14 @@ std::string ToRGBHex(SkColor color) {
SkColorGetG(color), SkColorGetB(color));
}
std::string ToRGBAHex(SkColor color, bool include_hash) {
std::string color_str = base::StringPrintf(
"%02X%02X%02X%02X", SkColorGetR(color), SkColorGetG(color),
SkColorGetB(color), SkColorGetA(color));
if (include_hash) {
return "#" + color_str;
}
return color_str;
}
} // namespace electron

Просмотреть файл

@ -17,6 +17,8 @@ SkColor ParseHexColor(const std::string& color_string);
// Convert color to RGB hex value like "#ABCDEF"
std::string ToRGBHex(SkColor color);
std::string ToRGBAHex(SkColor color, bool include_hash = true);
} // namespace electron
#endif // SHELL_COMMON_COLOR_UTIL_H_