[nautilus] [ln-p] port nautilus-icon-dnd to cairo drawing



commit 34a376c97717cb05187b3d880e991c2d23511109
Author: Benjamin Otte <otte redhat com>
Date:   Fri Aug 13 18:08:58 2010 +0200

    [ln-p] port nautilus-icon-dnd to cairo drawing

 libnautilus-private/nautilus-icon-dnd.c |   44 ++++++------------------------
 libnautilus-private/nautilus-icon-dnd.h |    8 +-----
 2 files changed, 10 insertions(+), 42 deletions(-)
---
diff --git a/libnautilus-private/nautilus-icon-dnd.c b/libnautilus-private/nautilus-icon-dnd.c
index 7695c86..84d96e3 100644
--- a/libnautilus-private/nautilus-icon-dnd.c
+++ b/libnautilus-private/nautilus-icon-dnd.c
@@ -93,7 +93,6 @@ create_selection_shadow (NautilusIconContainer *container,
 {
 	EelCanvasGroup *group;
 	EelCanvas *canvas;
-	GdkBitmap *stipple;
 	int max_x, max_y;
 	int min_x, min_y;
 	GList *p;
@@ -108,9 +107,6 @@ create_selection_shadow (NautilusIconContainer *container,
 		return NULL;
 	}
 		
-	stipple = container->details->dnd_info->stipple;
-	g_return_val_if_fail (stipple != NULL, NULL);
-
 	canvas = EEL_CANVAS (container);
 	gtk_widget_get_allocation (GTK_WIDGET (container), &allocation);
 
@@ -155,7 +151,6 @@ create_selection_shadow (NautilusIconContainer *container,
 				 "x2", (double) x2,
 				 "y2", (double) y2,
 				 "outline_color", "black",
-				 "outline_stipple", stipple,
 				 "width_pixels", 1,
 				 NULL);
 	}
@@ -1477,6 +1472,7 @@ drag_highlight_expose (GtkWidget      *widget,
 {
 	gint x, y, width, height;
 	GdkWindow *window;
+	cairo_t *cr;
 	
 	x = gtk_adjustment_get_value (gtk_layout_get_hadjustment (GTK_LAYOUT (widget)));
 	y = gtk_adjustment_get_value (gtk_layout_get_vadjustment (GTK_LAYOUT (widget)));
@@ -1489,11 +1485,13 @@ drag_highlight_expose (GtkWidget      *widget,
 			  NULL, widget, "dnd",
 			  x, y, width, height);
   
-	gdk_draw_rectangle (window,
-			    (gtk_widget_get_style(widget))->black_gc,
-			    FALSE,
-			    x, y, width - 1, height - 1);
-	
+	cr = gdk_cairo_create (window);
+	cairo_set_line_width (cr, 1.0);
+	cairo_set_source_rgb (cr, 0, 0, 0);
+	cairo_rectangle (cr, x + 0.5, y + 0.5, width - 1, height - 1);
+	cairo_stroke (cr);
+	cairo_destroy (cr);
+
 	return FALSE;
 }
 
@@ -1798,23 +1796,7 @@ drag_data_received_callback (GtkWidget *widget,
 }
 
 void
-nautilus_icon_dnd_set_stipple (NautilusIconContainer *container,
-			       GdkBitmap             *stipple)
-{
-	if (stipple != NULL) {
-		g_object_ref (stipple);
-	}
-	
-	if (container->details->dnd_info->stipple != NULL) {
-		g_object_unref (container->details->dnd_info->stipple);
-	}
-
-	container->details->dnd_info->stipple = stipple;
-}
-
-void
-nautilus_icon_dnd_init (NautilusIconContainer *container,
-			GdkBitmap *stipple)
+nautilus_icon_dnd_init (NautilusIconContainer *container)
 {
 	GtkTargetList *targets;
 	int n_elements;
@@ -1862,10 +1844,6 @@ nautilus_icon_dnd_init (NautilusIconContainer *container,
 			  G_CALLBACK (drag_drop_callback), NULL);
 	g_signal_connect (container, "drag_leave",
 			  G_CALLBACK (drag_leave_callback), NULL);
-
-	if (stipple != NULL) {
-		container->details->dnd_info->stipple = g_object_ref (stipple);
-	}
 }
 
 void
@@ -1876,10 +1854,6 @@ nautilus_icon_dnd_fini (NautilusIconContainer *container)
 	if (container->details->dnd_info != NULL) {
 		stop_auto_scroll (container);
 
-		if (container->details->dnd_info->stipple != NULL) {
-			g_object_unref (container->details->dnd_info->stipple);
-		}
-
 		nautilus_drag_finalize (&container->details->dnd_info->drag_info);
 		container->details->dnd_info = NULL;
 	}
diff --git a/libnautilus-private/nautilus-icon-dnd.h b/libnautilus-private/nautilus-icon-dnd.h
index 72c8616..4a1fde1 100644
--- a/libnautilus-private/nautilus-icon-dnd.h
+++ b/libnautilus-private/nautilus-icon-dnd.h
@@ -38,19 +38,13 @@ typedef struct {
 
 	gboolean highlighted;
 	
-	/* Stipple for drawing icon shadows during DnD.  */
-        GdkBitmap *stipple;
-
 	/* Shadow for the icons being dragged.  */
 	EelCanvasItem *shadow;
 } NautilusIconDndInfo;
 
 
-void   nautilus_icon_dnd_init                  (NautilusIconContainer *container,
-						GdkBitmap             *stipple);
+void   nautilus_icon_dnd_init                  (NautilusIconContainer *container);
 void   nautilus_icon_dnd_fini                  (NautilusIconContainer *container);
-void   nautilus_icon_dnd_set_stipple           (NautilusIconContainer *container,
-						GdkBitmap             *stipple);
 void   nautilus_icon_dnd_begin_drag            (NautilusIconContainer *container,
 						GdkDragAction          actions,
 						gint                   button,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]