Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 2546ffb3ea49dcdd93d428c76e1814be > files > 7

gnome-libs-1.4.2-18.fc15.src.rpm

--- gnome-libs-1.2.13/libgnomeui/gnome-canvas.c.bghack	Mon Jan  8 12:51:06 2001
+++ gnome-libs-1.2.13/libgnomeui/gnome-canvas.c	Mon Jul 23 16:45:01 2001
@@ -3172,6 +3172,18 @@
 #define IMAGE_WIDTH_AA 256
 #define IMAGE_HEIGHT_AA 64
 
+static GQuark bg_hack_quark = 0;
+void
+gnome_canvas_set_nautilus_bg_hack (GnomeCanvas *canvas,
+				   gboolean     use_bg_hack)
+{
+	if (!bg_hack_quark)
+		bg_hack_quark = g_quark_from_static_string ("nautilus-bg-hack");
+
+	use_bg_hack = use_bg_hack != FALSE;
+	gtk_object_set_data_by_id (GTK_OBJECT (canvas), bg_hack_quark, GUINT_TO_POINTER (use_bg_hack));
+}
+
 /* Repaints the areas in the canvas that need it */
 static void
 paint (GnomeCanvas *canvas)
@@ -3183,6 +3195,12 @@
 	GdkPixmap *pixmap;
 	ArtIRect *rects;
 	gint n_rects, i;
+	gboolean bg_hack = FALSE;
+
+	if (!bg_hack_quark)
+		bg_hack_quark = g_quark_from_static_string ("nautilus-bg-hack");
+	if (gtk_object_get_data_by_id (GTK_OBJECT (canvas), bg_hack_quark))
+		bg_hack = TRUE;
 
 	if (canvas->need_update) {
 		double affine[6];
@@ -3241,7 +3259,9 @@
 			if (canvas->aa) {
 				GnomeCanvasBuf buf;
 				GdkColor *color;
-
+				gint dest_x;
+				gint dest_y;
+				
 				buf.buf = g_new (guchar, IMAGE_WIDTH_AA * IMAGE_HEIGHT_AA * 3);
 				buf.buf_rowstride = IMAGE_WIDTH_AA * 3;
 				buf.rect.x0 = draw_x1;
@@ -3260,23 +3280,26 @@
 						canvas->root->object.klass)->render) (
 							canvas->root, &buf);
 
+				dest_x = draw_x1 - DISPLAY_X1 (canvas) + canvas->zoom_xofs;
+				dest_y = draw_y1 - DISPLAY_Y1 (canvas) + canvas->zoom_yofs;
+
 				if (buf.is_bg) {
-					gdk_rgb_gc_set_foreground (canvas->pixmap_gc, buf.bg_color);
-					gdk_draw_rectangle (canvas->layout.bin_window,
-							    canvas->pixmap_gc,
-							    TRUE,
-							    (draw_x1 - DISPLAY_X1 (canvas)
-							     + canvas->zoom_xofs),
-							    (draw_y1 - DISPLAY_Y1 (canvas)
-							     + canvas->zoom_yofs),
-							    width, height);
+					if (bg_hack)
+						gdk_window_clear_area (canvas->layout.bin_window,
+								       dest_x, dest_y,
+								       width, height);
+					else {
+						gdk_rgb_gc_set_foreground (canvas->pixmap_gc, buf.bg_color);
+						gdk_draw_rectangle (canvas->layout.bin_window,
+								    canvas->pixmap_gc,
+								    TRUE,
+								    dest_x, dest_y,
+								    width, height);
+					}
 				} else {
 					gdk_draw_rgb_image_dithalign (canvas->layout.bin_window,
 							    canvas->pixmap_gc,
-							    (draw_x1 - DISPLAY_X1 (canvas)
-							     + canvas->zoom_xofs),
-							    (draw_y1 - DISPLAY_Y1 (canvas)
-							     + canvas->zoom_yofs),
+						            dest_x, dest_y,
 							    width, height,
 							    canvas->dither,
 							    buf.buf,