summaryrefslogtreecommitdiffstats
path: root/ui/gfx/native_theme_gtk.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ui/gfx/native_theme_gtk.cc')
-rw-r--r--ui/gfx/native_theme_gtk.cc87
1 files changed, 87 insertions, 0 deletions
diff --git a/ui/gfx/native_theme_gtk.cc b/ui/gfx/native_theme_gtk.cc
new file mode 100644
index 0000000..53d2636
--- /dev/null
+++ b/ui/gfx/native_theme_gtk.cc
@@ -0,0 +1,87 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/gfx/native_theme_gtk.h"
+
+#include <gtk/gtk.h>
+
+#include "base/basictypes.h"
+#include "base/logging.h"
+#include "ui/gfx/skia_utils_gtk.h"
+
+namespace {
+
+const SkColor kInvalidColorIdColor = SkColorSetRGB(255, 0, 128);
+
+// Theme colors returned by GetSystemColor().
+
+// FocusableBorder:
+const SkColor kFocusedBorderColor = SkColorSetRGB(0x4D, 0x90, 0xFE);
+const SkColor kUnfocusedBorderColor = SkColorSetRGB(0xD9, 0xD9, 0xD9);
+
+// TextButton:
+const SkColor kTextButtonBackgroundColor = SkColorSetRGB(0xde, 0xde, 0xde);
+const SkColor kTextButtonEnabledColor = SkColorSetRGB(6, 45, 117);
+const SkColor kTextButtonDisabledColor = SkColorSetRGB(161, 161, 146);
+const SkColor kTextButtonHighlightColor = SkColorSetARGB(200, 255, 255, 255);
+const SkColor kTextButtonHoverColor = kTextButtonEnabledColor;
+
+} // namespace
+
+namespace gfx {
+
+// static
+const NativeTheme* NativeTheme::instance() {
+ return NativeThemeGtk::instance();
+}
+
+// static
+const NativeThemeGtk* NativeThemeGtk::instance() {
+ CR_DEFINE_STATIC_LOCAL(NativeThemeGtk, s_native_theme, ());
+ return &s_native_theme;
+}
+
+SkColor NativeThemeGtk::GetSystemColor(ColorId color_id) const {
+ switch (color_id) {
+ case kColorId_DialogBackground:
+ // TODO(benrg): This code used to call gtk_widget_get_style() on the
+ // widget being styled. After refactoring, that widget is not available
+ // and we have to call gtk_widget_get_default_style(). Unfortunately,
+ // it turns out that this breaks everything (chromium bug 105609,
+ // chromium-os bug 23461). Need to figure out the right thing and do it.
+ return gfx::GdkColorToSkColor(
+ gtk_widget_get_default_style()->bg[GTK_STATE_NORMAL]);
+
+ // FocusableBorder:
+ case kColorId_FocusedBorderColor:
+ return kFocusedBorderColor;
+ case kColorId_UnfocusedBorderColor:
+ return kUnfocusedBorderColor;
+
+ // TextButton:
+ case kColorId_TextButtonBackgroundColor:
+ return kTextButtonBackgroundColor;
+ case kColorId_TextButtonEnabledColor:
+ return kTextButtonEnabledColor;
+ case kColorId_TextButtonDisabledColor:
+ return kTextButtonDisabledColor;
+ case kColorId_TextButtonHighlightColor:
+ return kTextButtonHighlightColor;
+ case kColorId_TextButtonHoverColor:
+ return kTextButtonHoverColor;
+
+ default:
+ NOTREACHED() << "Invalid color_id: " << color_id;
+ break;
+ }
+ return kInvalidColorIdColor;
+}
+
+NativeThemeGtk::NativeThemeGtk() {
+}
+
+NativeThemeGtk::~NativeThemeGtk() {
+}
+
+} // namespace gfx