Index: chrome/browser/gtk/browser_window_gtk.cc |
=================================================================== |
--- chrome/browser/gtk/browser_window_gtk.cc (revision 23643) |
+++ chrome/browser/gtk/browser_window_gtk.cc (working copy) |
@@ -486,38 +486,29 @@ |
gboolean BrowserWindowGtk::OnCustomFrameExpose(GtkWidget* widget, |
GdkEventExpose* event, |
BrowserWindowGtk* window) { |
- static NineBox* default_background = NULL; |
- static NineBox* default_background_inactive = NULL; |
- static NineBox* default_background_otr = NULL; |
- static NineBox* default_background_otr_inactive = NULL; |
- |
ThemeProvider* theme_provider = |
window->browser()->profile()->GetThemeProvider(); |
- if (!default_background) { |
- default_background = new NineBox(theme_provider, |
- 0, IDR_THEME_FRAME, 0, 0, 0, 0, 0, 0, 0); |
- default_background_inactive = new NineBox(theme_provider, |
- 0, IDR_THEME_FRAME_INACTIVE, 0, 0, 0, 0, 0, 0, 0); |
- default_background_otr = new NineBox(theme_provider, |
- 0, IDR_THEME_FRAME_INCOGNITO, 0, 0, 0, 0, 0, 0, 0); |
- default_background_otr_inactive = new NineBox(theme_provider, |
- 0, IDR_THEME_FRAME_INCOGNITO_INACTIVE, 0, 0, 0, 0, 0, 0, 0); |
- } |
// Draw the default background. |
cairo_t* cr = gdk_cairo_create(GDK_DRAWABLE(widget->window)); |
cairo_rectangle(cr, event->area.x, event->area.y, event->area.width, |
event->area.height); |
cairo_clip(cr); |
- NineBox* image = NULL; |
+ |
+ int image_name; |
if (window->IsActive()) { |
- image = window->browser()->profile()->IsOffTheRecord() |
- ? default_background_otr : default_background; |
+ image_name = window->browser()->profile()->IsOffTheRecord() ? |
+ IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME; |
} else { |
- image = window->browser()->profile()->IsOffTheRecord() |
- ? default_background_otr_inactive : default_background_inactive; |
+ image_name = window->browser()->profile()->IsOffTheRecord() ? |
+ IDR_THEME_FRAME_INCOGNITO_INACTIVE : IDR_THEME_FRAME_INACTIVE; |
} |
- image->RenderTopCenterStrip(cr, 0, 0, widget->allocation.width); |
+ GdkPixbuf* pixbuf = theme_provider->GetPixbufNamed(image_name); |
+ gdk_cairo_set_source_pixbuf(cr, pixbuf, 0, 0); |
+ cairo_pattern_set_extend(cairo_get_source(cr), CAIRO_EXTEND_REPEAT); |
+ cairo_rectangle(cr, event->area.x, event->area.y, |
+ event->area.width, event->area.height); |
+ cairo_fill(cr); |
if (theme_provider->HasCustomImage(IDR_THEME_FRAME_OVERLAY)) { |
GdkPixbuf* theme_overlay = theme_provider->GetPixbufNamed( |
@@ -533,16 +524,15 @@ |
if (window->use_custom_frame_.GetValue() && !window->IsMaximized()) { |
static NineBox custom_frame_border( |
- theme_provider, |
- IDR_WINDOW_TOP_LEFT_CORNER, |
- IDR_WINDOW_TOP_CENTER, |
- IDR_WINDOW_TOP_RIGHT_CORNER, |
- IDR_WINDOW_LEFT_SIDE, |
- NULL, |
- IDR_WINDOW_RIGHT_SIDE, |
- IDR_WINDOW_BOTTOM_LEFT_CORNER, |
- IDR_WINDOW_BOTTOM_CENTER, |
- IDR_WINDOW_BOTTOM_RIGHT_CORNER); |
+ IDR_WINDOW_TOP_LEFT_CORNER, |
+ IDR_WINDOW_TOP_CENTER, |
+ IDR_WINDOW_TOP_RIGHT_CORNER, |
+ IDR_WINDOW_LEFT_SIDE, |
+ NULL, |
+ IDR_WINDOW_RIGHT_SIDE, |
+ IDR_WINDOW_BOTTOM_LEFT_CORNER, |
+ IDR_WINDOW_BOTTOM_CENTER, |
+ IDR_WINDOW_BOTTOM_RIGHT_CORNER); |
custom_frame_border.RenderToWidget(widget); |
} |
@@ -556,16 +546,20 @@ |
// Draw the shadow above the toolbar. Tabs on the tabstrip will draw over us. |
ThemeProvider* theme_provider = |
window->browser()->profile()->GetThemeProvider(); |
- static NineBox top_shadow(theme_provider, |
- 0, IDR_CONTENT_TOP_CENTER, 0, 0, 0, 0, 0, 0, 0); |
int left_x, top_y; |
gtk_widget_translate_coordinates(window->content_vbox_, |
GTK_WIDGET(window->window_), 0, 0, &left_x, |
&top_y); |
int width = window->content_vbox_->allocation.width; |
- top_shadow.RenderTopCenterStrip(cr, |
- left_x, top_y - kContentShadowThickness, width); |
+ GdkPixbuf* top_center = theme_provider->GetPixbufNamed(IDR_CONTENT_TOP_CENTER); |
tony
2009/08/19 17:47:26
Nit: 80 cols.
|
+ gdk_cairo_set_source_pixbuf(cr, top_center, |
+ left_x, top_y - kContentShadowThickness); |
+ cairo_pattern_set_extend(cairo_get_source(cr), CAIRO_EXTEND_REPEAT); |
+ cairo_rectangle(cr, left_x, top_y - kContentShadowThickness, width, |
+ gdk_pixbuf_get_height(top_center)); |
+ cairo_fill(cr); |
+ |
// Only draw the rest of the shadow if the user has the custom frame enabled. |
if (!window->use_custom_frame_.GetValue()) |
return; |