summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorerg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-08 19:22:13 +0000
committererg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-08 19:22:13 +0000
commitdf7fba1ca4a21fbf8d5738d522b4b63abbf425fe (patch)
tree1e4ad8d09520adce8e83ad563445ec3799bc9ad5 /chrome/browser
parentfd2fa3fe2b81d0125c20a6d6f352386bac4a8e23 (diff)
downloadchromium_src-df7fba1ca4a21fbf8d5738d522b4b63abbf425fe.zip
chromium_src-df7fba1ca4a21fbf8d5738d522b4b63abbf425fe.tar.gz
chromium_src-df7fba1ca4a21fbf8d5738d522b4b63abbf425fe.tar.bz2
GTK Theme: Don't render IDR_THEME_TOOLBAR on GtkWidgets.
IDR_THEME_TOOLBAR is a generated blank image of the bg[SELECTED] color, which will be drawn by default on GtkWidgets. Uploading an image of said color to the X server on each expose and then asking it to tile the image across the widget is silly; stop doing it. Also sets clip rectangles correctly in a few places where we were using GdkGC instead of skia. Review URL: http://codereview.chromium.org/196044 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25647 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/gtk/bookmark_bar_gtk.cc10
-rw-r--r--chrome/browser/gtk/browser_toolbar_gtk.cc4
-rw-r--r--chrome/browser/gtk/find_bar_gtk.cc1
-rw-r--r--chrome/browser/gtk/rounded_window.cc1
4 files changed, 15 insertions, 1 deletions
diff --git a/chrome/browser/gtk/bookmark_bar_gtk.cc b/chrome/browser/gtk/bookmark_bar_gtk.cc
index 45cd4e0..eb16e2e 100644
--- a/chrome/browser/gtk/bookmark_bar_gtk.cc
+++ b/chrome/browser/gtk/bookmark_bar_gtk.cc
@@ -176,7 +176,8 @@ void BookmarkBarGtk::Init(Profile* profile) {
g_signal_connect(instructions_, "drag-data-received",
G_CALLBACK(&OnDragReceived), this);
- gtk_widget_set_app_paintable(widget(), TRUE);
+ // Only paint in chrome theme mode.
+ gtk_widget_set_app_paintable(widget(), !theme_provider_->UseGtkTheme());
g_signal_connect(G_OBJECT(widget()), "expose-event",
G_CALLBACK(&OnEventBoxExpose), this);
@@ -489,6 +490,9 @@ void BookmarkBarGtk::Observe(NotificationType type,
<< "don't have a BookmarkModel. Taking no action.";
}
+ // When using the GTK+ theme, let GTK optimize the background drawing.
+ gtk_widget_set_app_paintable(widget(), !theme_provider_->UseGtkTheme());
+
// When using the GTK+ theme, we need to have the event box be visible so
// buttons don't get a halo color from the background. When using Chromium
// themes, we want to let the background show through the toolbar.
@@ -891,6 +895,10 @@ void BookmarkBarGtk::OnDragReceived(GtkWidget* widget,
gboolean BookmarkBarGtk::OnEventBoxExpose(GtkWidget* widget,
GdkEventExpose* event,
BookmarkBarGtk* bar) {
+ // We don't need to render the toolbar image in GTK mode.
+ if (bar->theme_provider_->UseGtkTheme())
+ return FALSE;
+
// Paint the background theme image.
cairo_t* cr = gdk_cairo_create(GDK_DRAWABLE(widget->window));
cairo_rectangle(cr, event->area.x, event->area.y,
diff --git a/chrome/browser/gtk/browser_toolbar_gtk.cc b/chrome/browser/gtk/browser_toolbar_gtk.cc
index ec25a9f..79bd45d 100644
--- a/chrome/browser/gtk/browser_toolbar_gtk.cc
+++ b/chrome/browser/gtk/browser_toolbar_gtk.cc
@@ -533,6 +533,10 @@ void BrowserToolbarGtk::ChangeActiveMenu(GtkWidget* active_menu,
gboolean BrowserToolbarGtk::OnAlignmentExpose(GtkWidget* widget,
GdkEventExpose* e,
BrowserToolbarGtk* toolbar) {
+ // We don't need to render the toolbar image in GTK mode.
+ if (toolbar->theme_provider_->UseGtkTheme())
+ return FALSE;
+
cairo_t* cr = gdk_cairo_create(GDK_DRAWABLE(widget->window));
cairo_rectangle(cr, e->area.x, e->area.y, e->area.width, e->area.height);
cairo_clip(cr);
diff --git a/chrome/browser/gtk/find_bar_gtk.cc b/chrome/browser/gtk/find_bar_gtk.cc
index 0bf856a..503e1b8 100644
--- a/chrome/browser/gtk/find_bar_gtk.cc
+++ b/chrome/browser/gtk/find_bar_gtk.cc
@@ -735,6 +735,7 @@ gboolean FindBarGtk::OnExpose(GtkWidget* widget, GdkEventExpose* e,
GdkDrawable* drawable = GDK_DRAWABLE(e->window);
GdkGC* gc = gdk_gc_new(drawable);
+ gdk_gc_set_clip_rectangle(gc, &e->area);
GdkColor color = bar->theme_provider_->GetBorderColor();
gdk_gc_set_rgb_fg_color(gc, &color);
diff --git a/chrome/browser/gtk/rounded_window.cc b/chrome/browser/gtk/rounded_window.cc
index b549a3f..a614634 100644
--- a/chrome/browser/gtk/rounded_window.cc
+++ b/chrome/browser/gtk/rounded_window.cc
@@ -148,6 +148,7 @@ gboolean OnRoundedWindowExpose(GtkWidget* widget,
GdkDrawable* drawable = GDK_DRAWABLE(event->window);
GdkGC* gc = gdk_gc_new(drawable);
+ gdk_gc_set_clip_rectangle(gc, &event->area);
gdk_gc_set_rgb_fg_color(gc, &data->border_color);
// Stroke the frame border.