Index: chrome/browser/ui/libgtkui/native_theme_gtk2.cc |
diff --git a/chrome/browser/ui/libgtkui/native_theme_gtk.cc b/chrome/browser/ui/libgtkui/native_theme_gtk2.cc |
similarity index 75% |
copy from chrome/browser/ui/libgtkui/native_theme_gtk.cc |
copy to chrome/browser/ui/libgtkui/native_theme_gtk2.cc |
index 67af85048fbeb260523c9099aaeca31ab8239168..a81bf68ab4f2c06d84b7db5ffb9ae77d45ebd5cf 100644 |
--- a/chrome/browser/ui/libgtkui/native_theme_gtk.cc |
+++ b/chrome/browser/ui/libgtkui/native_theme_gtk2.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/ui/libgtkui/native_theme_gtk.h" |
+#include "chrome/browser/ui/libgtkui/native_theme_gtk2.h" |
#include <gtk/gtk.h> |
@@ -26,61 +26,6 @@ namespace libgtkui { |
namespace { |
-// Theme colors returned by GetSystemColor(). |
-const SkColor kInvalidColorIdColor = SkColorSetRGB(255, 0, 128); |
-const SkColor kURLTextColor = SkColorSetRGB(0x0b, 0x80, 0x43); |
- |
-// Generates the normal URL color, a green color used in unhighlighted URL |
-// text. It is a mix of |kURLTextColor| and the current text color. Unlike the |
-// selected text color, it is more important to match the qualities of the |
-// foreground typeface color instead of taking the background into account. |
-SkColor NormalURLColor(SkColor foreground) { |
- color_utils::HSL fg_hsl, hue_hsl; |
- color_utils::SkColorToHSL(foreground, &fg_hsl); |
- color_utils::SkColorToHSL(kURLTextColor, &hue_hsl); |
- |
- // Only allow colors that have a fair amount of saturation in them (color vs |
- // white). This means that our output color will always be fairly green. |
- double s = std::max(0.5, fg_hsl.s); |
- |
- // Make sure the luminance is at least as bright as the |kURLTextColor| green |
- // would be if we were to use that. |
- double l; |
- if (fg_hsl.l < hue_hsl.l) |
- l = hue_hsl.l; |
- else |
- l = (fg_hsl.l + hue_hsl.l) / 2; |
- |
- color_utils::HSL output = {hue_hsl.h, s, l}; |
- return color_utils::HSLToSkColor(output, 255); |
-} |
- |
-// Generates the selected URL color, a green color used on URL text in the |
-// currently highlighted entry in the autocomplete popup. It's a mix of |
-// |kURLTextColor|, the current text color, and the background color (the |
-// select highlight). It is more important to contrast with the background |
-// saturation than to look exactly like the foreground color. |
-SkColor SelectedURLColor(SkColor foreground, SkColor background) { |
- color_utils::HSL fg_hsl, bg_hsl, hue_hsl; |
- color_utils::SkColorToHSL(foreground, &fg_hsl); |
- color_utils::SkColorToHSL(background, &bg_hsl); |
- color_utils::SkColorToHSL(kURLTextColor, &hue_hsl); |
- |
- // The saturation of the text should be opposite of the background, clamped |
- // to 0.2-0.8. We make sure it's greater than 0.2 so there's some color, but |
- // less than 0.8 so it's not the oversaturated neon-color. |
- double opposite_s = 1 - bg_hsl.s; |
- double s = std::max(0.2, std::min(0.8, opposite_s)); |
- |
- // The luminance should match the luminance of the foreground text. Again, |
- // we clamp so as to have at some amount of color (green) in the text. |
- double opposite_l = fg_hsl.l; |
- double l = std::max(0.1, std::min(0.9, opposite_l)); |
- |
- color_utils::HSL output = {hue_hsl.h, s, l}; |
- return color_utils::HSLToSkColor(output, 255); |
-} |
- |
enum WidgetState { |
NORMAL = 0, |
ACTIVE = 1, |
@@ -89,14 +34,10 @@ enum WidgetState { |
INSENSITIVE = 4, |
}; |
-#if GTK_MAJOR_VERSION == 2 |
// Same order as enum WidgetState above |
const GtkStateType stateMap[] = { |
- GTK_STATE_NORMAL, |
- GTK_STATE_ACTIVE, |
- GTK_STATE_PRELIGHT, |
- GTK_STATE_SELECTED, |
- GTK_STATE_INSENSITIVE, |
+ GTK_STATE_NORMAL, GTK_STATE_ACTIVE, GTK_STATE_PRELIGHT, |
+ GTK_STATE_SELECTED, GTK_STATE_INSENSITIVE, |
}; |
SkColor GetFGColor(GtkWidget* widget, WidgetState state) { |
@@ -116,47 +57,6 @@ SkColor GetBaseColor(GtkWidget* widget, WidgetState state) { |
return GdkColorToSkColor(gtk_rc_get_style(widget)->base[stateMap[state]]); |
} |
-#else |
-// Same order as enum WidgetState above |
-const GtkStateFlags stateMap[] = { |
- GTK_STATE_FLAG_NORMAL, GTK_STATE_FLAG_ACTIVE, |
- GTK_STATE_FLAG_PRELIGHT, GTK_STATE_FLAG_SELECTED, |
- GTK_STATE_FLAG_INSENSITIVE, |
-}; |
- |
-SkColor GetFGColor(GtkWidget* widget, WidgetState state) { |
- GdkRGBA color; |
- gtk_style_context_get_color(gtk_widget_get_style_context(widget), |
- stateMap[state], &color); |
- return SkColorSetRGB(color.red * 255, color.green * 255, color.blue * 255); |
-} |
-SkColor GetBGColor(GtkWidget* widget, WidgetState state) { |
- GdkRGBA color; |
- |
- G_GNUC_BEGIN_IGNORE_DEPRECATIONS |
- gtk_style_context_get_background_color(gtk_widget_get_style_context(widget), |
- stateMap[state], &color); |
- G_GNUC_END_IGNORE_DEPRECATIONS |
- |
- // Hack for default color |
- if (color.alpha == 0.0) |
- color = {1, 1, 1, 1}; |
- |
- return SkColorSetRGB(color.red * 255, color.green * 255, color.blue * 255); |
-} |
- |
-SkColor GetTextColor(GtkWidget* widget, WidgetState state) { |
- return GetFGColor(widget, state); |
-} |
-SkColor GetTextAAColor(GtkWidget* widget, WidgetState state) { |
- return GetFGColor(widget, state); |
-} |
-SkColor GetBaseColor(GtkWidget* widget, WidgetState state) { |
- return GetBGColor(widget, state); |
-} |
- |
-#endif |
- |
} // namespace |
// static |
@@ -282,7 +182,12 @@ SkColor NativeThemeGtk2::GetSystemColor(ColorId color_id) const { |
return SkColorSetA(GetSystemColor(kColorId_LinkEnabled), 0xBB); |
case kColorId_LinkEnabled: { |
SkColor link_color = SK_ColorTRANSPARENT; |
- GetChromeStyleColor("link-color", &link_color); |
+ GdkColor* style_color = nullptr; |
+ gtk_widget_style_get(GetWindow(), "link-color", &style_color, nullptr); |
+ if (style_color) { |
+ link_color = GdkColorToSkColor(*style_color); |
+ gdk_color_free(style_color); |
+ } |
if (link_color != SK_ColorTRANSPARENT) |
return link_color; |
// Default color comes from gtklinkbutton.c. |
@@ -321,7 +226,6 @@ SkColor NativeThemeGtk2::GetSystemColor(ColorId color_id) const { |
case kColorId_TextfieldDefaultBackground: |
return GetBaseColor(GetEntry(), NORMAL); |
-#if GTK_MAJOR_VERSION == 2 |
case kColorId_TextfieldReadOnlyColor: |
return GetTextColor(GetEntry(), ACTIVE); |
case kColorId_TextfieldReadOnlyBackground: |
@@ -330,16 +234,6 @@ SkColor NativeThemeGtk2::GetSystemColor(ColorId color_id) const { |
return GetTextColor(GetEntry(), SELECTED); |
case kColorId_TextfieldSelectionBackgroundFocused: |
return GetBaseColor(GetEntry(), SELECTED); |
-#else |
- case kColorId_TextfieldReadOnlyColor: |
- return GetTextColor(GetEntry(), SELECTED); |
- case kColorId_TextfieldReadOnlyBackground: |
- return GetBaseColor(GetEntry(), SELECTED); |
- case kColorId_TextfieldSelectionColor: |
- return GetTextColor(GetLabel(), SELECTED); |
- case kColorId_TextfieldSelectionBackgroundFocused: |
- return GetBaseColor(GetLabel(), SELECTED); |
-#endif |
// Tooltips |
case kColorId_TooltipBackground: |
@@ -456,22 +350,6 @@ SkColor NativeThemeGtk2::GetSystemColor(ColorId color_id) const { |
return kInvalidColorIdColor; |
} |
-// Get ChromeGtkFrame theme colors. No-op in GTK3. |
-bool NativeThemeGtk2::GetChromeStyleColor(const char* style_property, |
- SkColor* ret_color) const { |
-#if GTK_MAJOR_VERSION == 2 |
- GdkColor* style_color = nullptr; |
- gtk_widget_style_get(GetWindow(), style_property, &style_color, nullptr); |
- if (style_color) { |
- *ret_color = GdkColorToSkColor(*style_color); |
- gdk_color_free(style_color); |
- return true; |
- } |
-#endif |
- |
- return false; |
-} |
- |
GtkWidget* NativeThemeGtk2::GetWindow() const { |
static GtkWidget* fake_window = NULL; |