diff options
Diffstat (limited to 'ui/gfx/native_theme_gtk.cc')
-rw-r--r-- | ui/gfx/native_theme_gtk.cc | 87 |
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 |