Index: chrome/browser/gtk/bookmark_bar_gtk.cc |
diff --git a/chrome/browser/gtk/bookmark_bar_gtk.cc b/chrome/browser/gtk/bookmark_bar_gtk.cc |
index 45cd4e0e3b6be597853403c17a2659e6262dd79f..eb16e2eb3dfadc089a081bee228e55286d277435 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, |