[evolution/wip/gsettings] Adapt ETableHeaderItem to latest gtk+-3.0 API.



commit b754e4a5d2f9b19ab7d70f79bad698c0fc69beff
Author: Matthew Barnes <mbarnes redhat com>
Date:   Sat Jan 15 10:12:53 2011 -0500

    Adapt ETableHeaderItem to latest gtk+-3.0 API.

 widgets/table/e-table-header-item.c  |   36 +++++++++++++++++-----------------
 widgets/table/e-table-header-utils.c |   25 +++++++++++------------
 widgets/table/e-table-header-utils.h |    4 +-
 3 files changed, 32 insertions(+), 33 deletions(-)
---
diff --git a/widgets/table/e-table-header-item.c b/widgets/table/e-table-header-item.c
index eda9e26..b7388fd 100644
--- a/widgets/table/e-table-header-item.c
+++ b/widgets/table/e-table-header-item.c
@@ -454,24 +454,18 @@ static GtkWidget *
 make_shaped_window_from_xpm (const gchar **xpm)
 {
 	GdkPixbuf *pixbuf;
-	GdkPixmap *pixmap;
-	GdkBitmap *bitmap;
 	GtkWidget *win, *pix;
 
 	pixbuf = gdk_pixbuf_new_from_xpm_data (xpm);
-	gdk_pixbuf_render_pixmap_and_mask (pixbuf, &pixmap, &bitmap, 128);
-	g_object_unref (pixbuf);
 
 	win = gtk_window_new (GTK_WINDOW_POPUP);
 	gtk_window_set_type_hint (GTK_WINDOW (win), GDK_WINDOW_TYPE_HINT_NOTIFICATION);
 
-	pix = gtk_image_new_from_pixmap (pixmap, bitmap);
+	pix = gtk_image_new_from_pixbuf (pixbuf);
 	gtk_widget_realize (win);
 	gtk_container_add (GTK_CONTAINER (win), pix);
-	gtk_widget_shape_combine_mask (win, bitmap, 0, 0);
 
-	g_object_unref (pixmap);
-	g_object_unref (bitmap);
+	g_object_unref (pixbuf);
 
 	return win;
 }
@@ -972,7 +966,7 @@ ethi_unrealize (GnomeCanvasItem *item)
 
 static void
 ethi_draw (GnomeCanvasItem *item,
-           GdkDrawable *drawable,
+           cairo_t *cr,
            gint x,
            gint y,
            gint width,
@@ -1036,7 +1030,7 @@ ethi_draw (GnomeCanvasItem *item,
 		state = gtk_widget_get_state (GTK_WIDGET (canvas));
 
 		e_table_header_draw_button (
-			drawable, ecol,
+			cr, ecol,
 			style, state, GTK_WIDGET (canvas),
 			x1 - x, -y, width, height,
 			x2 - x1, ethi->height,
@@ -1176,7 +1170,10 @@ ethi_start_drag (ETableHeaderItem *ethi, GdkEvent *event)
 	GdkDragContext *context;
 	ETableCol *ecol;
 	gint col_width;
-	GdkPixmap *pixmap;
+	cairo_surface_t *s;
+	GdkPixbuf *pixbuf;
+	cairo_t *cr;
+
 	gint group_indent = 0;
 	GHashTable *arrows = g_hash_table_new (NULL, NULL);
 	GtkStateType state;
@@ -1236,26 +1233,29 @@ ethi_start_drag (ETableHeaderItem *ethi, GdkEvent *event)
 
 	ecol = e_table_header_get_column (ethi->eth, ethi->drag_col);
 	col_width = ecol->width;
-	pixmap = gdk_pixmap_new (window, col_width, ethi->height, -1);
+	s = cairo_image_surface_create (CAIRO_FORMAT_A1, col_width, ethi->height);
+	cr = cairo_create (s);
+	pixbuf = gdk_pixbuf_get_from_surface(s, 
+			0, 0, 
+			col_width, ethi->height);
 
 	state = gtk_widget_get_state (widget);
 
 	e_table_header_draw_button (
-		pixmap, ecol,
+		cr, ecol,
 		style, state,
 		widget, 0, 0,
 		col_width, ethi->height,
 		col_width, ethi->height,
 		(ETableColArrow) g_hash_table_lookup (
 			arrows, GINT_TO_POINTER (ecol->col_idx)));
-	gtk_drag_set_icon_pixmap (
+	gtk_drag_set_icon_pixbuf (
 		context,
-		gdk_drawable_get_colormap (GDK_DRAWABLE (window)),
-		pixmap,
-		NULL,
+		pixbuf,
 		col_width / 2,
 		ethi->height / 2);
-	g_object_unref (pixmap);
+	g_object_unref (pixbuf);
+	cairo_surface_destroy (s);
 
 	ethi->maybe_drag = FALSE;
 	g_hash_table_destroy (arrows);
diff --git a/widgets/table/e-table-header-utils.c b/widgets/table/e-table-header-utils.c
index 56fa44a..da60ce0 100644
--- a/widgets/table/e-table-header-utils.c
+++ b/widgets/table/e-table-header-utils.c
@@ -237,7 +237,7 @@ make_composite_pixmap (GdkDrawable *drawable, GdkGC *gc,
  * Draws a button suitable for a table header.
  **/
 void
-e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
+e_table_header_draw_button (cairo_t *cr, ETableCol *ecol,
 			    GtkStyle *style, GtkStateType state,
 			    GtkWidget *widget,
 			    gint x, gint y, gint width, gint height,
@@ -249,10 +249,9 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 	gint inner_width, inner_height;
 	gint arrow_width = 0, arrow_height = 0;
 	PangoLayout *layout;
-        cairo_t *cr;
 	static gpointer g_label = NULL;
 
-	g_return_if_fail (drawable != NULL);
+	g_return_if_fail (cr != NULL);
 	g_return_if_fail (ecol != NULL);
 	g_return_if_fail (E_IS_TABLE_COL (ecol));
 	g_return_if_fail (style != NULL);
@@ -272,8 +271,7 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 		gtk_widget_realize (g_label);
 	}
 
-        cr = gdk_cairo_create (drawable);
-
+	cairo_save (cr);
         gdk_cairo_set_source_color (cr, &gtk_widget_get_style (GTK_WIDGET (g_label))->fg[state]);
 
 	xthick = style->xthickness;
@@ -281,8 +279,8 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 
 	/* Button bevel */
 
-	gtk_paint_box (style, drawable, state, GTK_SHADOW_OUT,
-		       NULL, widget, "button",
+	gtk_paint_box (style, cr, state, GTK_SHADOW_OUT,
+		       widget, "button",
 		       x, y, button_width, button_height);
 
 	/* Inside area */
@@ -291,7 +289,7 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 	inner_height = button_height - 2 * (ythick + HEADER_PADDING);
 
 	if (inner_width < 1 || inner_height < 1) {
-		cairo_destroy (cr);
+		cairo_restore (cr);
 		return; /* nothing fits */
 	}
 
@@ -313,11 +311,12 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 			inner_width -= arrow_width + HEADER_PADDING;
 		break;
 	default:
+		cairo_restore (cr);
 		g_return_if_reached ();
 	}
 
 	if (inner_width < 1) {
-		cairo_destroy (cr);
+		cairo_restore (cr);
 		return; /* nothing else fits */
 	}
 
@@ -397,8 +396,8 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 		if (ecol->icon_name == NULL)
 			inner_width += arrow_width + HEADER_PADDING;
 
-		gtk_paint_arrow (style, drawable, state,
-				 GTK_SHADOW_NONE, NULL, widget, "header",
+		gtk_paint_arrow (style, cr, state,
+				 GTK_SHADOW_NONE, widget, "header",
 				 (arrow == E_TABLE_COL_ARROW_UP) ? GTK_ARROW_UP : GTK_ARROW_DOWN,
 				 (ecol->icon_name == NULL),
 				 inner_x + inner_width - arrow_width,
@@ -408,10 +407,10 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 	}
 
 	default:
+		cairo_restore (cr);
 		g_return_if_reached ();
 	}
 
 	g_object_unref (layout);
-
-        cairo_destroy (cr);
+	cairo_restore (cr);
 }
diff --git a/widgets/table/e-table-header-utils.h b/widgets/table/e-table-header-utils.h
index 3ae11a4..cfa568b 100644
--- a/widgets/table/e-table-header-utils.h
+++ b/widgets/table/e-table-header-utils.h
@@ -32,8 +32,8 @@ G_BEGIN_DECLS
 
 gdouble		e_table_header_compute_height	(ETableCol *ecol,
 						 GtkWidget *widget);
-gdouble		e_table_header_width_extras	(GtkStyle       *style);
-void		e_table_header_draw_button	(GdkDrawable    *drawable,
+gdouble		e_table_header_width_extras	(GtkStyle *style);
+void		e_table_header_draw_button	(cairo_t *cr,
 						 ETableCol*ecol,
 						 GtkStyle *style,
 						 GtkStateType state,



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