summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorerg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-08 00:34:33 +0000
committererg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-08 00:34:33 +0000
commit76855757706810dbe575ccf5c0996f0d7932671d (patch)
tree4158b5ebae25141a8104383365c71135ee9ae7c2 /chrome/browser
parentd11ead72d53b18bd43ff08b4c24141bd98a58ba2 (diff)
downloadchromium_src-76855757706810dbe575ccf5c0996f0d7932671d.zip
chromium_src-76855757706810dbe575ccf5c0996f0d7932671d.tar.gz
chromium_src-76855757706810dbe575ccf5c0996f0d7932671d.tar.bz2
GTK Theme: Use Glen's new non-border
Imports Glen's new icons, and creates centered versions of all of them. Then use these icons in the GTK theme interface. Also selects the button tinting color to be a lighter color on some very dark backgrounds. Review URL: http://codereview.chromium.org/164202 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22839 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/browser_theme_provider.cc10
-rw-r--r--chrome/browser/gtk/go_button_gtk.cc15
-rw-r--r--chrome/browser/gtk/gtk_theme_provider.cc59
-rw-r--r--chrome/browser/gtk/toolbar_star_toggle_gtk.cc4
4 files changed, 55 insertions, 33 deletions
diff --git a/chrome/browser/browser_theme_provider.cc b/chrome/browser/browser_theme_provider.cc
index b6af887..c6da8b9 100644
--- a/chrome/browser/browser_theme_provider.cc
+++ b/chrome/browser/browser_theme_provider.cc
@@ -142,10 +142,12 @@ static const int kToolbarButtonIDs[] = {
IDR_FORWARD, IDR_FORWARD_D, IDR_FORWARD_H, IDR_FORWARD_P,
IDR_RELOAD, IDR_RELOAD_H, IDR_RELOAD_P,
IDR_HOME, IDR_HOME_H, IDR_HOME_P,
- IDR_STAR, IDR_STAR_NOBORDER, IDR_STAR_D, IDR_STAR_H, IDR_STAR_P,
- IDR_STARRED, IDR_STARRED_NOBORDER, IDR_STARRED_H, IDR_STARRED_P,
- IDR_GO, IDR_GO_H, IDR_GO_P,
- IDR_STOP, IDR_STOP_H, IDR_STOP_P,
+ IDR_STAR, IDR_STAR_NOBORDER, IDR_STAR_NOBORDER_CENTER, IDR_STAR_D, IDR_STAR_H,
+ IDR_STAR_P,
+ IDR_STARRED, IDR_STARRED_NOBORDER, IDR_STARRED_NOBORDER_CENTER, IDR_STARRED_H,
+ IDR_STARRED_P,
+ IDR_GO, IDR_GO_NOBORDER, IDR_GO_NOBORDER_CENTER, IDR_GO_H, IDR_GO_P,
+ IDR_STOP, IDR_STOP_NOBORDER, IDR_STOP_NOBORDER_CENTER, IDR_STOP_H, IDR_STOP_P,
IDR_MENU_PAGE, IDR_MENU_PAGE_RTL,
IDR_MENU_CHROME, IDR_MENU_CHROME_RTL,
IDR_MENU_DROPARROW,
diff --git a/chrome/browser/gtk/go_button_gtk.cc b/chrome/browser/gtk/go_button_gtk.cc
index dfcae5e..ec9f594 100644
--- a/chrome/browser/gtk/go_button_gtk.cc
+++ b/chrome/browser/gtk/go_button_gtk.cc
@@ -203,18 +203,17 @@ void GoButtonGtk::UpdateThemeButtons() {
bool use_gtk = theme_provider_ && theme_provider_->UseGtkTheme();
if (use_gtk) {
- // TODO(erg): Waiting for Glen to make a version of these that don't have a
- // button border on it.
+ GdkPixbuf* pixbuf = NULL;
if (intended_mode_ == MODE_GO) {
- gtk_button_set_image(
- GTK_BUTTON(widget_.get()),
- gtk_image_new_from_stock(GTK_STOCK_MEDIA_PLAY, GTK_ICON_SIZE_BUTTON));
+ pixbuf = theme_provider_->GetPixbufNamed(IDR_GO_NOBORDER_CENTER);
} else {
- gtk_button_set_image(
- GTK_BUTTON(widget_.get()),
- gtk_image_new_from_stock(GTK_STOCK_STOP, GTK_ICON_SIZE_BUTTON));
+ pixbuf = theme_provider_->GetPixbufNamed(IDR_STOP_NOBORDER_CENTER);
}
+ gtk_button_set_image(
+ GTK_BUTTON(widget_.get()),
+ gtk_image_new_from_pixbuf(pixbuf));
+
gtk_widget_set_size_request(widget_.get(), -1, -1);
gtk_widget_set_app_paintable(widget_.get(), FALSE);
gtk_widget_set_double_buffered(widget_.get(), TRUE);
diff --git a/chrome/browser/gtk/gtk_theme_provider.cc b/chrome/browser/gtk/gtk_theme_provider.cc
index a9e331b..4a4075f 100644
--- a/chrome/browser/gtk/gtk_theme_provider.cc
+++ b/chrome/browser/gtk/gtk_theme_provider.cc
@@ -30,6 +30,17 @@ const skia::HSL kExactColor = { -1, -1, -1 };
const skia::HSL kDefaultFrameShift = { -1, -1, 0.4 };
+// Minimum difference between the toolbar and the button color before we try a
+// different color.
+const double kMinimumLuminanceDifference = 0.1;
+
+// Converts a GdkColor to a SkColor.
+SkColor GdkToSkColor(GdkColor* color) {
+ return SkColorSetRGB(color->red >> 8,
+ color->green >> 8,
+ color->blue >> 8);
+}
+
} // namespace
// static
@@ -175,7 +186,9 @@ void GtkThemeProvider::LoadGtkValues() {
GdkColor frame_color = window_style->bg[GTK_STATE_SELECTED];
GdkColor inactive_frame_color = window_style->bg[GTK_STATE_INSENSITIVE];
+ GdkColor toolbar_color = window_style->bg[GTK_STATE_NORMAL];
GdkColor button_color = window_style->bg[GTK_STATE_SELECTED];
+ GdkColor label_color = label_style->text[GTK_STATE_NORMAL];
GtkSettings* settings = gtk_settings_get_default();
bool theme_has_frame_color = false;
@@ -205,28 +218,39 @@ void GtkThemeProvider::LoadGtkValues() {
// color, change the luminosity of the frame color downwards to 80% of what
// it currently is. This is in a futile attempt to match the default
// metacity and xfwm themes.
- SkColor shifted =
- skia::HSLShift(SkColorSetRGB((frame_color.red >> 8),
- (frame_color.green >> 8),
- (frame_color.blue >> 8)),
- kDefaultFrameShift);
+ SkColor shifted = skia::HSLShift(GdkToSkColor(&frame_color),
+ kDefaultFrameShift);
frame_color.pixel = 0;
frame_color.red = SkColorGetR(shifted) * kSkiaToGDKMultiplier;
frame_color.green = SkColorGetG(shifted) * kSkiaToGDKMultiplier;
frame_color.blue = SkColorGetB(shifted) * kSkiaToGDKMultiplier;
}
+ // By default, the button tint color is the background selection color. But
+ // this can be unreadable in some dark themes, so we set a minimum contrast
+ // between the button color and the toolbar color.
+ skia::HSL button_hsl;
+ skia::SkColorToHSL(GdkToSkColor(&button_color), button_hsl);
+ skia::HSL toolbar_hsl;
+ skia::SkColorToHSL(GdkToSkColor(&toolbar_color), toolbar_hsl);
+ double hsl_difference = fabs(button_hsl.l - toolbar_hsl.l);
+ if (hsl_difference <= kMinimumLuminanceDifference) {
+ // Not enough contrast. Try the text color instead.
+ skia::HSL label_hsl;
+ skia::SkColorToHSL(GdkToSkColor(&label_color), label_hsl);
+ double label_difference = fabs(label_hsl.l - toolbar_hsl.l);
+ if (label_difference >= kMinimumLuminanceDifference) {
+ button_color = label_color;
+ }
+ }
+
SetThemeColorFromGtk(kColorFrame, &frame_color);
// Skip COLOR_FRAME_INACTIVE and the incognito colors, as they will be
// autogenerated from tints.
- SetThemeColorFromGtk(kColorToolbar,
- &window_style->bg[GTK_STATE_NORMAL]);
- SetThemeColorFromGtk(kColorTabText,
- &label_style->text[GTK_STATE_NORMAL]);
- SetThemeColorFromGtk(kColorBackgroundTabText,
- &label_style->text[GTK_STATE_NORMAL]);
- SetThemeColorFromGtk(kColorBookmarkText,
- &label_style->text[GTK_STATE_NORMAL]);
+ SetThemeColorFromGtk(kColorToolbar, &toolbar_color);
+ SetThemeColorFromGtk(kColorTabText, &label_color);
+ SetThemeColorFromGtk(kColorBackgroundTabText, &label_color);
+ SetThemeColorFromGtk(kColorBookmarkText, &label_color);
SetThemeColorFromGtk(kColorControlBackground,
&window_style->bg[GTK_STATE_NORMAL]);
SetThemeColorFromGtk(kColorButtonBackground,
@@ -257,17 +281,14 @@ void GtkThemeProvider::LoadGtkValues() {
}
void GtkThemeProvider::SetThemeColorFromGtk(const char* id, GdkColor* color) {
- SetColor(id, SkColorSetRGB(color->red >> 8,
- color->green >> 8,
- color->blue >> 8));
+ SetColor(id, GdkToSkColor(color));
}
void GtkThemeProvider::SetThemeTintFromGtk(const char* id, GdkColor* color,
const skia::HSL& default_tint) {
skia::HSL hsl;
- skia::SkColorToHSL(SkColorSetRGB((color->red >> 8),
- (color->green >> 8),
- (color->blue >> 8)), hsl);
+ skia::SkColorToHSL(GdkToSkColor(color), hsl);
+
if (default_tint.s != -1)
hsl.s = default_tint.s;
diff --git a/chrome/browser/gtk/toolbar_star_toggle_gtk.cc b/chrome/browser/gtk/toolbar_star_toggle_gtk.cc
index 9e844d7..ed4f524c 100644
--- a/chrome/browser/gtk/toolbar_star_toggle_gtk.cc
+++ b/chrome/browser/gtk/toolbar_star_toggle_gtk.cc
@@ -96,9 +96,9 @@ void ToolbarStarToggleGtk::UpdateGTKButton() {
if (use_gtk) {
GdkPixbuf* pixbuf = NULL;
if (is_starred_) {
- pixbuf = theme_provider_->GetPixbufNamed(IDR_STARRED_NOBORDER);
+ pixbuf = theme_provider_->GetPixbufNamed(IDR_STARRED_NOBORDER_CENTER);
} else {
- pixbuf = theme_provider_->GetPixbufNamed(IDR_STAR_NOBORDER);
+ pixbuf = theme_provider_->GetPixbufNamed(IDR_STAR_NOBORDER_CENTER);
}
gtk_button_set_image(