Index: chrome/browser/ui/libgtk2ui/native_theme_gtk2.h |
diff --git a/chrome/browser/ui/libgtk2ui/native_theme_gtk2.h b/chrome/browser/ui/libgtk2ui/native_theme_gtk2.h |
index 78e9c8997708366dd17be024d3a0453cb3e85c9a..a4da945ad35ad870ba4638f910fe2afae81e0b47 100644 |
--- a/chrome/browser/ui/libgtk2ui/native_theme_gtk2.h |
+++ b/chrome/browser/ui/libgtk2ui/native_theme_gtk2.h |
@@ -10,7 +10,62 @@ |
#include "chrome/browser/ui/libgtk2ui/owned_widget_gtk2.h" |
#include "ui/native_theme/native_theme_base.h" |
-typedef struct _GdkColor GdkColor; |
+ |
+ |
+//if GTK_MAJOR_VERSION == 2 |
+#if 1 |
+ |
+#define GET_FG_COLOR(gtkwidget, gtkstate) \ |
+ GdkColorToSkColor(gtk_rc_get_style(gtkwidget)->fg[GTK_STATE_ ## gtkstate]) |
+ |
+#define GET_BG_COLOR(gtkwidget, gtkstate) \ |
+ GdkColorToSkColor(gtk_rc_get_style(gtkwidget)->bg[GTK_STATE_ ## gtkstate]) |
+ |
+#define GET_TEXT_COLOR(gtkwidget, gtkstate) \ |
+ GdkColorToSkColor(gtk_rc_get_style(gtkwidget)->text[GTK_STATE_ ## gtkstate]) |
+ |
+#define GET_TEXT_AA_COLOR(gtkwidget, gtkstate) \ |
+ GdkColorToSkColor(gtk_rc_get_style(gtkwidget)->text_aa[GTK_STATE_ ## gtkstate]) |
+ |
+#define GET_BASE_COLOR(gtkwidget, gtkstate) \ |
+ GdkColorToSkColor(gtk_rc_get_style(gtkwidget)->base[GTK_STATE_ ## gtkstate]) |
+ |
+#else |
+ |
+inline SkColor FgColorToSkColor(GtkWidget* widget, GtkStateFlags flags) { |
+ GdkRGBA color; |
+ gtk_style_context_get_color( |
+ gtk_widget_get_style_context(widget), flags, &color); |
+ return SkColorSetRGB(color.red * 255, color.green * 255, color.blue * 255); |
+} |
+inline SkColor BgColorToSkColor(GtkWidget* widget, GtkStateFlags flags) { |
+ GdkRGBA color; |
+ gtk_style_context_get_background_color( |
+ gtk_widget_get_style_context(widget), flags, &color); |
+ |
+ //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); |
+} |
+ |
+ |
+#define GET_FG_COLOR(gtkwidget, gtkstate) \ |
+ FgColorToSkColor(gtkwidget, GTK_STATE_FLAG_ ## gtkstate) |
+ |
+#define GET_BG_COLOR(gtkwidget, gtkstate) \ |
+ BgColorToSkColor(gtkwidget, GTK_STATE_FLAG_ ## gtkstate) |
+ |
+ |
+ |
+#define GET_TEXT_COLOR GET_FG_COLOR |
+#define GET_TEXT_AA_COLOR GET_FG_COLOR |
+#define GET_BASE_COLOR GET_BG_COLOR |
+ |
+#endif |
+ |
+ |
namespace libgtk2ui { |
@@ -41,37 +96,32 @@ class NativeThemeGtk2 : public ui::NativeThemeBase { |
const gfx::Rect& rect, |
const MenuListExtraParams& menu_list) const override; |
+ // Returns various widgets for theming use. |
+ GtkWidget* GetWindow() const; |
+ GtkWidget* GetEntry() const; |
+ GtkWidget* GetLabel() const; |
+ GtkWidget* GetButton() const; |
+ GtkWidget* GetTree() const; |
+ GtkWidget* GetTooltip() const; |
+ GtkWidget* GetMenu() const; |
+ GtkWidget* GetMenuItem() const; |
+ |
private: |
NativeThemeGtk2(); |
~NativeThemeGtk2() override; |
- // Implementation of GetSystemColor. |
- GdkColor GetSystemGdkColor(ColorId color_id) const; |
- |
- // Returns styles associated with various widget types. |
- GtkWidget* GetRealizedWindow() const; |
- GtkStyle* GetWindowStyle() const; |
- GtkStyle* GetEntryStyle() const; |
- GtkStyle* GetLabelStyle() const; |
- GtkStyle* GetButtonStyle() const; |
- GtkStyle* GetTreeStyle() const; |
- GtkStyle* GetTooltipStyle() const; |
- GtkStyle* GetMenuStyle() const; |
- GtkStyle* GetMenuItemStyle() const; |
- |
void PaintComboboxArrow(SkCanvas* canvas, |
- GtkStateType state, |
+ State state, |
const gfx::Rect& rect) const; |
- mutable GtkWidget* fake_window_; |
- mutable GtkWidget* fake_tooltip_; |
+ mutable OwnedWidgetGtk fake_window_; |
mutable OwnedWidgetGtk fake_entry_; |
mutable OwnedWidgetGtk fake_label_; |
mutable OwnedWidgetGtk fake_button_; |
mutable OwnedWidgetGtk fake_tree_; |
- |
+ mutable OwnedWidgetGtk fake_tooltip_; |
mutable OwnedWidgetGtk fake_menu_; |
- mutable GtkWidget* fake_menu_item_; |
+ mutable OwnedWidgetGtk fake_menu_item_; |
DISALLOW_COPY_AND_ASSIGN(NativeThemeGtk2); |
}; |