// 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/native_theme/native_theme_gtk.h" #include #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); // MenuItem const SkColor kFocusedMenuItemBackgroundColor = SkColorSetARGB(13, 0, 0, 0); const SkColor kHoverMenuItemBackgroundColor = SkColorSetRGB(204, 204, 204); // MenuButton const SkColor kEnabledMenuButtonBorderColor = SkColorSetARGB(36, 0, 0, 0); const SkColor kFocusedMenuButtonBorderColor = SkColorSetARGB(72, 0, 0, 0); const SkColor kHoverMenuButtonBorderColor = SkColorSetARGB(72, 0, 0, 0); // Button: const SkColor kButtonBackgroundColor = SkColorSetRGB(0xde, 0xde, 0xde); const SkColor kButtonEnabledColor = SkColorSetRGB(6, 45, 117); const SkColor kButtonDisabledColor = SkColorSetRGB(161, 161, 146); const SkColor kButtonHighlightColor = SkColorSetARGB(200, 255, 255, 255); const SkColor kButtonHoverColor = kButtonEnabledColor; } // namespace namespace ui { // static NativeTheme* NativeTheme::instance() { return NativeThemeGtk::instance(); } // static 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; // MenuItem case kColorId_FocusedMenuItemBackgroundColor: return kFocusedMenuItemBackgroundColor; case kColorId_HoverMenuItemBackgroundColor: return kHoverMenuItemBackgroundColor; case kColorId_EnabledMenuButtonBorderColor: return kEnabledMenuButtonBorderColor; case kColorId_FocusedMenuButtonBorderColor: return kFocusedMenuButtonBorderColor; case kColorId_HoverMenuButtonBorderColor: return kHoverMenuButtonBorderColor; // Button: case kColorId_ButtonBackgroundColor: return kButtonBackgroundColor; case kColorId_ButtonEnabledColor: return kButtonEnabledColor; case kColorId_ButtonDisabledColor: return kButtonDisabledColor; case kColorId_ButtonHighlightColor: return kButtonHighlightColor; case kColorId_ButtonHoverColor: return kButtonHoverColor; default: NOTREACHED() << "Invalid color_id: " << color_id; break; } return kInvalidColorIdColor; } NativeThemeGtk::NativeThemeGtk() { } NativeThemeGtk::~NativeThemeGtk() { } } // namespace ui