From 644d77efccd8242e1977ed5e35398b0966026873 Mon Sep 17 00:00:00 2001 From: "erg@google.com" Date: Wed, 27 Jan 2010 01:03:10 +0000 Subject: GTK: Use GTK+ theme selection colors and plumb them into webkit. [Chromium side of patch] BUG=25831 TEST=none Review URL: http://codereview.chromium.org/554004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37193 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/gtk/gtk_theme_provider.cc | 35 ++++++++++++++++++++++++-------- chrome/browser/gtk/gtk_theme_provider.h | 16 +++++++++++++++ 2 files changed, 42 insertions(+), 9 deletions(-) (limited to 'chrome/browser/gtk') diff --git a/chrome/browser/gtk/gtk_theme_provider.cc b/chrome/browser/gtk/gtk_theme_provider.cc index c6cf09d..48353ec0 100644 --- a/chrome/browser/gtk/gtk_theme_provider.cc +++ b/chrome/browser/gtk/gtk_theme_provider.cc @@ -552,15 +552,6 @@ void GtkThemeProvider::LoadGtkValues() { SetTintToExactColor(BrowserThemeProvider::TINT_FRAME_INCOGNITO_INACTIVE, &inactive_frame_color); - focus_ring_color_ = GdkToSkColor(&button_color); - GdkColor thumb_active_color, thumb_inactive_color, track_color; - GtkThemeProvider::GetScrollbarColors(&thumb_active_color, - &thumb_inactive_color, - &track_color); - thumb_active_color_ = GdkToSkColor(&thumb_active_color); - thumb_inactive_color_ = GdkToSkColor(&thumb_inactive_color); - track_color_ = GdkToSkColor(&track_color); - // We pick the text and background colors for the NTP out of the colors for a // GtkEntry. We do this because GtkEntries background color is never the same // as |toolbar_color|, is usually a white, and when it isn't a white, @@ -601,6 +592,27 @@ void GtkThemeProvider::LoadGtkValues() { link_color); SetThemeColorFromGtk(BrowserThemeProvider::COLOR_NTP_SECTION_LINK_UNDERLINE, link_color); + + // Generate the colors that we pass to WebKit. + focus_ring_color_ = GdkToSkColor(&button_color); + GdkColor thumb_active_color, thumb_inactive_color, track_color; + GtkThemeProvider::GetScrollbarColors(&thumb_active_color, + &thumb_inactive_color, + &track_color); + thumb_active_color_ = GdkToSkColor(&thumb_active_color); + thumb_inactive_color_ = GdkToSkColor(&thumb_inactive_color); + track_color_ = GdkToSkColor(&track_color); + + // Some GTK themes only define the text selection colors on the GtkEntry + // class, so we need to use that for getting selection colors. + active_selection_bg_color_ = + GdkToSkColor(&entry_style->base[GTK_STATE_SELECTED]); + active_selection_fg_color_ = + GdkToSkColor(&entry_style->text[GTK_STATE_SELECTED]); + inactive_selection_bg_color_ = + GdkToSkColor(&entry_style->base[GTK_STATE_ACTIVE]); + inactive_selection_fg_color_ = + GdkToSkColor(&entry_style->text[GTK_STATE_ACTIVE]); } GtkStyle* GtkThemeProvider::GetFrameStyle() { @@ -622,6 +634,11 @@ void GtkThemeProvider::LoadDefaultValues() { thumb_active_color_ = SkColorSetRGB(250, 248, 245); thumb_inactive_color_ = SkColorSetRGB(240, 235, 229); track_color_ = SkColorSetRGB(227, 221, 216); + + active_selection_bg_color_ = SkColorSetRGB(30, 144, 255); + active_selection_fg_color_ = SK_ColorBLACK; + inactive_selection_bg_color_ = SkColorSetRGB(200, 200, 200); + inactive_selection_fg_color_ = SkColorSetRGB(50, 50, 50); } void GtkThemeProvider::SetThemeColorFromGtk(int id, const GdkColor* color) { diff --git a/chrome/browser/gtk/gtk_theme_provider.h b/chrome/browser/gtk/gtk_theme_provider.h index db396ab..919c522 100644 --- a/chrome/browser/gtk/gtk_theme_provider.h +++ b/chrome/browser/gtk/gtk_theme_provider.h @@ -89,6 +89,18 @@ class GtkThemeProvider : public BrowserThemeProvider, return thumb_inactive_color_; } const SkColor& get_track_color() const { return track_color_; } + const SkColor& get_active_selection_bg_color() const { + return active_selection_bg_color_; + } + const SkColor& get_active_selection_fg_color() const { + return active_selection_fg_color_; + } + const SkColor& get_inactive_selection_bg_color() const { + return inactive_selection_bg_color_; + } + const SkColor& get_inactive_selection_fg_color() const { + return inactive_selection_fg_color_; + } // These functions do not add a ref to the returned pixbuf, and it should not // be unreffed. If |native| is true, get the GTK_STOCK version of the icon. @@ -180,6 +192,10 @@ class GtkThemeProvider : public BrowserThemeProvider, SkColor thumb_active_color_; SkColor thumb_inactive_color_; SkColor track_color_; + SkColor active_selection_bg_color_; + SkColor active_selection_fg_color_; + SkColor inactive_selection_bg_color_; + SkColor inactive_selection_fg_color_; // Image cache of lazily created images, created when requested by // GetBitmapNamed(). -- cgit v1.1