| Index: ui/native_theme/native_theme_mac.mm
|
| diff --git a/ui/native_theme/native_theme_mac.mm b/ui/native_theme/native_theme_mac.mm
|
| index c3152a8d14582fcd4275d808283e813769e68e6c..034e49739d38cc3be0191b0b2751e8dc2d78b6e4 100644
|
| --- a/ui/native_theme/native_theme_mac.mm
|
| +++ b/ui/native_theme/native_theme_mac.mm
|
| @@ -4,14 +4,52 @@
|
|
|
| #include "ui/native_theme/native_theme_mac.h"
|
|
|
| +#include <Cocoa/Cocoa.h>
|
| +
|
| #include "base/basictypes.h"
|
| +#include "base/mac/scoped_cftyperef.h"
|
| #include "ui/native_theme/common_theme.h"
|
| +#include "skia/ext/skia_utils_mac.h"
|
| +
|
| +#if !defined(MAC_OS_X_VERSION_10_8) || \
|
| + MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8
|
| +
|
| +@interface NSColor (MountainLionAPI)
|
| +- (CGColorRef)CGColor;
|
| +@end
|
| +
|
| +#endif
|
|
|
| namespace {
|
|
|
| const SkColor kInvalidColorIdColor = SkColorSetRGB(255, 0, 128);
|
| const SkColor kDialogBackgroundColor = SkColorSetRGB(251, 251, 251);
|
|
|
| +// System colors use NSNamedColorSpace System.
|
| +SkColor SystemColor(NSColor* color) {
|
| + NSColor* deviceColor =
|
| + [color colorUsingColorSpace:[NSColorSpace deviceRGBColorSpace]];
|
| + if (!deviceColor) {
|
| + // Sometimes the conversion is not possible, but we can get an approximation
|
| + // by going through a CGColorRef.
|
| + if ([color respondsToSelector:@selector(CGColor)]) {
|
| + CGColorRef cg_color = ([color CGColor]);
|
| + if (CGColorGetNumberOfComponents(cg_color) == 2) {
|
| + const CGFloat* components = CGColorGetComponents(cg_color);
|
| + return SkColorSetARGB(SkScalarRoundToInt(255.0 * components[1]),
|
| + SkScalarRoundToInt(255.0 * components[0]),
|
| + SkScalarRoundToInt(255.0 * components[0]),
|
| + SkScalarRoundToInt(255.0 * components[0]));
|
| + }
|
| + return gfx::CGColorRefToSkColor(cg_color);
|
| + } else {
|
| + NOTIMPLEMENTED();
|
| + return SkColor();
|
| + }
|
| + }
|
| + return gfx::NSDeviceColorToSkColor(deviceColor);
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace ui {
|
| @@ -33,10 +71,36 @@ SkColor NativeThemeMac::GetSystemColor(ColorId color_id) const {
|
| return color;
|
|
|
| switch (color_id) {
|
| + case kColorId_WindowBackground:
|
| + return SystemColor([NSColor windowBackgroundColor]);
|
| case kColorId_DialogBackground:
|
| return kDialogBackgroundColor;
|
| + case kColorId_ButtonBackgroundColor:
|
| + return SystemColor([NSColor controlBackgroundColor]);
|
| + case kColorId_LabelEnabledColor:
|
| + return SystemColor([NSColor controlTextColor]);
|
| + case kColorId_LabelDisabledColor:
|
| + return SystemColor([NSColor disabledControlTextColor]);
|
| + case kColorId_LabelBackgroundColor:
|
| + return SystemColor([NSColor textBackgroundColor]);
|
| + case kColorId_ButtonEnabledColor:
|
| + case kColorId_ButtonDisabledColor:
|
| + return SystemColor([NSColor controlColor]);
|
| + case kColorId_ButtonHighlightColor:
|
| + return SystemColor([NSColor selectedControlColor]);
|
| + case kColorId_ButtonHoverColor:
|
| + return SystemColor([NSColor controlHighlightColor]);
|
| + case kColorId_TextfieldDefaultColor:
|
| + return SystemColor([NSColor textColor]);
|
| + case kColorId_TextfieldDefaultBackground:
|
| + return SystemColor([NSColor textBackgroundColor]);
|
| + case kColorId_TextfieldSelectionColor:
|
| + return SystemColor([NSColor selectedTextColor]);
|
| + case kColorId_TextfieldSelectionBackgroundFocused:
|
| + return SystemColor([NSColor selectedTextBackgroundColor]);
|
| default:
|
| - NOTREACHED() << "Invalid color_id: " << color_id;
|
| + NOTIMPLEMENTED() << " Invalid color_id: " << color_id;
|
| + return FallbackTheme::GetSystemColor(color_id);
|
| }
|
|
|
| return kInvalidColorIdColor;
|
|
|