1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ui/native_theme/native_theme_gtk.h"
9 #include "base/basictypes.h"
10 #include "base/logging.h"
11 #include "ui/gfx/skia_utils_gtk.h"
15 const SkColor kInvalidColorIdColor = SkColorSetRGB(255, 0, 128);
17 // Theme colors returned by GetSystemColor().
20 const SkColor kFocusedBorderColor = SkColorSetRGB(0x4D, 0x90, 0xFE);
21 const SkColor kUnfocusedBorderColor = SkColorSetRGB(0xD9, 0xD9, 0xD9);
24 const SkColor kFocusedMenuItemBackgroundColor = SkColorSetARGB(13, 0, 0, 0);
25 const SkColor kHoverMenuItemBackgroundColor = SkColorSetRGB(204, 204, 204);
28 const SkColor kEnabledMenuButtonBorderColor = SkColorSetARGB(36, 0, 0, 0);
29 const SkColor kFocusedMenuButtonBorderColor = SkColorSetARGB(72, 0, 0, 0);
30 const SkColor kHoverMenuButtonBorderColor = SkColorSetARGB(72, 0, 0, 0);
33 const SkColor kButtonBackgroundColor = SkColorSetRGB(0xde, 0xde, 0xde);
34 const SkColor kButtonEnabledColor = SkColorSetRGB(6, 45, 117);
35 const SkColor kButtonDisabledColor = SkColorSetRGB(161, 161, 146);
36 const SkColor kButtonHighlightColor = SkColorSetARGB(200, 255, 255, 255);
37 const SkColor kButtonHoverColor = kButtonEnabledColor;
44 NativeTheme* NativeTheme::instance() {
45 return NativeThemeGtk::instance();
49 NativeThemeGtk* NativeThemeGtk::instance() {
50 CR_DEFINE_STATIC_LOCAL(NativeThemeGtk, s_native_theme, ());
51 return &s_native_theme;
54 SkColor NativeThemeGtk::GetSystemColor(ColorId color_id) const {
56 case kColorId_DialogBackground:
57 // TODO(benrg): This code used to call gtk_widget_get_style() on the
58 // widget being styled. After refactoring, that widget is not available
59 // and we have to call gtk_widget_get_default_style(). Unfortunately,
60 // it turns out that this breaks everything (chromium bug 105609,
61 // chromium-os bug 23461). Need to figure out the right thing and do it.
62 return gfx::GdkColorToSkColor(
63 gtk_widget_get_default_style()->bg[GTK_STATE_NORMAL]);
66 case kColorId_FocusedBorderColor:
67 return kFocusedBorderColor;
68 case kColorId_UnfocusedBorderColor:
69 return kUnfocusedBorderColor;
72 case kColorId_FocusedMenuItemBackgroundColor:
73 return kFocusedMenuItemBackgroundColor;
74 case kColorId_HoverMenuItemBackgroundColor:
75 return kHoverMenuItemBackgroundColor;
76 case kColorId_EnabledMenuButtonBorderColor:
77 return kEnabledMenuButtonBorderColor;
78 case kColorId_FocusedMenuButtonBorderColor:
79 return kFocusedMenuButtonBorderColor;
80 case kColorId_HoverMenuButtonBorderColor:
81 return kHoverMenuButtonBorderColor;
84 case kColorId_ButtonBackgroundColor:
85 return kButtonBackgroundColor;
86 case kColorId_ButtonEnabledColor:
87 return kButtonEnabledColor;
88 case kColorId_ButtonDisabledColor:
89 return kButtonDisabledColor;
90 case kColorId_ButtonHighlightColor:
91 return kButtonHighlightColor;
92 case kColorId_ButtonHoverColor:
93 return kButtonHoverColor;
96 NOTREACHED() << "Invalid color_id: " << color_id;
99 return kInvalidColorIdColor;
102 NativeThemeGtk::NativeThemeGtk() {
105 NativeThemeGtk::~NativeThemeGtk() {