root/ui/native_theme/native_theme_gtk.cc

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. instance
  2. instance
  3. GetSystemColor

// 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 <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);

// 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

/* [<][>][^][v][top][bottom][index][help] */