From fd8b55edaa88906b588aa07d9eadcacd34a7a774 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 13 Jan 2010 12:50:49 -0500 Subject: Fix all remaining GTK3 issues. Work around the issue of GnomeCanvasItem amending its own flags to GtkObject::flags (which is sealed) by giving it its own flags field. This breaks libgnomecanvas ABI and API, but I see no other way. --- libgnomecanvas/gnome-canvas-shape.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'libgnomecanvas/gnome-canvas-shape.c') diff --git a/libgnomecanvas/gnome-canvas-shape.c b/libgnomecanvas/gnome-canvas-shape.c index 79d8124525..b951cbc014 100644 --- a/libgnomecanvas/gnome-canvas-shape.c +++ b/libgnomecanvas/gnome-canvas-shape.c @@ -648,12 +648,18 @@ gnome_canvas_shape_realize (GnomeCanvasItem *item) (* parent_class->realize) (item); if (!item->canvas->aa) { + GtkLayout *layout; + GdkWindow *bin_window; + gcbp_ensure_gdk (shape); - g_assert(item->canvas->layout.bin_window != NULL); + layout = GTK_LAYOUT (item->canvas); + bin_window = gtk_layout_get_bin_window (layout); + + g_assert (bin_window != NULL); - shape->priv->gdk->fill_gc = gdk_gc_new (item->canvas->layout.bin_window); - shape->priv->gdk->outline_gc = gdk_gc_new (item->canvas->layout.bin_window); + shape->priv->gdk->fill_gc = gdk_gc_new (bin_window); + shape->priv->gdk->outline_gc = gdk_gc_new (bin_window); } } @@ -1428,10 +1434,11 @@ gcbp_ensure_mask (GnomeCanvasShape * shape, gint width, gint height) if ((width > ctx->width) || (height > ctx->height)) { /* Ctx is too small */ - + GtkWidget *widget; GdkWindow * window; - window = ((GtkWidget *) (((GnomeCanvasItem *) shape)->canvas))->window; + widget = GTK_WIDGET (GNOME_CANVAS_ITEM (shape)->canvas); + window = gtk_widget_get_window (widget); if (ctx->clear_gc) g_object_unref (ctx->clear_gc); if (ctx->xor_gc) g_object_unref (ctx->xor_gc); -- cgit v1.2.3