summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/common-context.cpp5
-rw-r--r--src/desktop-events.cpp2
-rw-r--r--src/display/canvas-arena.cpp22
-rw-r--r--src/display/canvas-bpath.cpp21
-rw-r--r--src/display/canvas-grid.cpp24
-rw-r--r--src/display/canvas-temporary-item.cpp3
-rw-r--r--src/display/canvas-text.cpp16
-rw-r--r--src/display/gnome-canvas-acetate.cpp17
-rw-r--r--src/display/guideline.cpp14
-rw-r--r--src/display/sodipodi-ctrl.cpp24
-rw-r--r--src/display/sodipodi-ctrlrect.cpp12
-rw-r--r--src/display/sp-canvas-item.h22
-rw-r--r--src/display/sp-canvas.cpp202
-rw-r--r--src/display/sp-ctrlcurve.cpp8
-rw-r--r--src/display/sp-ctrlline.cpp8
-rw-r--r--src/display/sp-ctrlpoint.cpp16
-rw-r--r--src/display/sp-ctrlquadr.cpp13
-rw-r--r--src/draw-anchor.cpp2
-rw-r--r--src/draw-context.cpp8
-rw-r--r--src/dropper-context.cpp2
-rw-r--r--src/dyna-draw-context.cpp6
-rw-r--r--src/eraser-context.cpp4
-rw-r--r--src/gradient-drag.cpp4
-rw-r--r--src/ink-comboboxentry-action.cpp2
-rw-r--r--src/knot.cpp2
-rw-r--r--src/lpe-tool-context.cpp6
-rw-r--r--src/pen-context.cpp14
-rw-r--r--src/pencil-context.cpp2
-rw-r--r--src/rubberband.cpp8
-rw-r--r--src/selcue.cpp8
-rw-r--r--src/seltrans.cpp6
-rw-r--r--src/spray-context.cpp2
-rw-r--r--src/text-context.cpp10
-rw-r--r--src/tweak-context.cpp2
-rw-r--r--src/ui/dialog/spellcheck.cpp4
-rw-r--r--src/ui/tool/control-point.cpp2
-rw-r--r--src/ui/tool/node-tool.cpp2
-rw-r--r--src/ui/tool/node.cpp2
-rw-r--r--src/ui/tool/path-manipulator.cpp2
-rw-r--r--src/ui/tool/selector.cpp2
-rw-r--r--src/ui/widget/ruler.cpp2
-rw-r--r--src/vanishing-point.cpp4
42 files changed, 291 insertions, 246 deletions
diff --git a/src/common-context.cpp b/src/common-context.cpp
index 467d19f72..9ced41a26 100644
--- a/src/common-context.cpp
+++ b/src/common-context.cpp
@@ -8,6 +8,7 @@
#include "message-context.h"
#include "streq.h"
#include "preferences.h"
+#include "display/sp-canvas-item.h"
#define MIN_PRESSURE 0.0
#define MAX_PRESSURE 1.0
@@ -116,7 +117,7 @@ static void sp_common_context_dispose(GObject *object)
}
while (ctx->segments) {
- gtk_object_destroy(GTK_OBJECT(ctx->segments->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(ctx->segments->data));
ctx->segments = g_slist_remove(ctx->segments, ctx->segments->data);
}
@@ -134,7 +135,7 @@ static void sp_common_context_dispose(GObject *object)
}
if (ctx->currentshape) {
- gtk_object_destroy(GTK_OBJECT(ctx->currentshape));
+ sp_canvas_item_destroy(ctx->currentshape);
ctx->currentshape = 0;
}
diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp
index 57a07fee3..1e6837ed2 100644
--- a/src/desktop-events.cpp
+++ b/src/desktop-events.cpp
@@ -200,7 +200,7 @@ static gint sp_dt_ruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidge
sp_dt_ruler_snap_new_guide(desktop, guide, event_dt, normal);
}
- gtk_object_destroy(GTK_OBJECT(guide));
+ sp_canvas_item_destroy(guide);
guide = NULL;
if ((horiz ? wy : wx) >= 0) {
Inkscape::XML::Document *xml_doc = desktop->doc()->getReprDoc();
diff --git a/src/display/canvas-arena.cpp b/src/display/canvas-arena.cpp
index 9aa119be9..f0fd63ef4 100644
--- a/src/display/canvas-arena.cpp
+++ b/src/display/canvas-arena.cpp
@@ -32,7 +32,7 @@ enum {
static void sp_canvas_arena_class_init(SPCanvasArenaClass *klass);
static void sp_canvas_arena_init(SPCanvasArena *group);
-static void sp_canvas_arena_destroy(GtkObject *object);
+static void sp_canvas_arena_destroy(SPCanvasItem *object);
static void sp_canvas_arena_item_deleted(SPCanvasArena *arena, Inkscape::DrawingItem *item);
static void sp_canvas_arena_update (SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
@@ -93,24 +93,19 @@ sp_canvas_arena_get_type (void)
static void
sp_canvas_arena_class_init (SPCanvasArenaClass *klass)
{
- GtkObjectClass *object_class;
- SPCanvasItemClass *item_class;
-
- object_class = (GtkObjectClass *) klass;
- item_class = (SPCanvasItemClass *) klass;
+ SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass;
parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass);
signals[ARENA_EVENT] = g_signal_new ("arena_event",
- G_TYPE_FROM_CLASS(object_class),
+ G_TYPE_FROM_CLASS(item_class),
G_SIGNAL_RUN_LAST,
((glong)((guint8*)&(klass->arena_event) - (guint8*)klass)),
NULL, NULL,
sp_marshal_INT__POINTER_POINTER,
G_TYPE_INT, 2, G_TYPE_POINTER, G_TYPE_POINTER);
- object_class->destroy = sp_canvas_arena_destroy;
-
+ item_class->destroy = sp_canvas_arena_destroy;
item_class->update = sp_canvas_arena_update;
item_class->render = sp_canvas_arena_render;
item_class->point = sp_canvas_arena_point;
@@ -147,16 +142,15 @@ sp_canvas_arena_init (SPCanvasArena *arena)
arena->active = NULL;
}
-static void
-sp_canvas_arena_destroy (GtkObject *object)
+static void sp_canvas_arena_destroy(SPCanvasItem *object)
{
- SPCanvasArena *arena = SP_CANVAS_ARENA (object);
+ SPCanvasArena *arena = SP_CANVAS_ARENA(object);
delete arena->observer;
arena->drawing.~Drawing();
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ if (SP_CANVAS_ITEM_CLASS(parent_class)->destroy)
+ (* SP_CANVAS_ITEM_CLASS(parent_class)->destroy) (object);
}
static void
diff --git a/src/display/canvas-bpath.cpp b/src/display/canvas-bpath.cpp
index 11bccf2a6..ee9e14f10 100644
--- a/src/display/canvas-bpath.cpp
+++ b/src/display/canvas-bpath.cpp
@@ -29,7 +29,7 @@
static void sp_canvas_bpath_class_init (SPCanvasBPathClass *klass);
static void sp_canvas_bpath_init (SPCanvasBPath *path);
-static void sp_canvas_bpath_destroy (GtkObject *object);
+static void sp_canvas_bpath_destroy(SPCanvasItem *object);
static void sp_canvas_bpath_update (SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
static void sp_canvas_bpath_render (SPCanvasItem *item, SPCanvasBuf *buf);
@@ -57,19 +57,13 @@ sp_canvas_bpath_get_type (void)
return type;
}
-static void
-sp_canvas_bpath_class_init (SPCanvasBPathClass *klass)
+static void sp_canvas_bpath_class_init(SPCanvasBPathClass *klass)
{
- GtkObjectClass *object_class;
- SPCanvasItemClass *item_class;
-
- object_class = GTK_OBJECT_CLASS (klass);
- item_class = (SPCanvasItemClass *) klass;
+ SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass;
parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass);
- object_class->destroy = sp_canvas_bpath_destroy;
-
+ item_class->destroy = sp_canvas_bpath_destroy;
item_class->update = sp_canvas_bpath_update;
item_class->render = sp_canvas_bpath_render;
item_class->point = sp_canvas_bpath_point;
@@ -88,8 +82,7 @@ sp_canvas_bpath_init (SPCanvasBPath * bpath)
bpath->stroke_miterlimit = 11.0;
}
-static void
-sp_canvas_bpath_destroy (GtkObject *object)
+static void sp_canvas_bpath_destroy(SPCanvasItem *object)
{
SPCanvasBPath *cbp = SP_CANVAS_BPATH (object);
@@ -97,8 +90,8 @@ sp_canvas_bpath_destroy (GtkObject *object)
cbp->curve = cbp->curve->unref();
}
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ if (SP_CANVAS_ITEM_CLASS(parent_class)->destroy)
+ (* SP_CANVAS_ITEM_CLASS(parent_class)->destroy) (object);
}
static void sp_canvas_bpath_update(SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags)
diff --git a/src/display/canvas-grid.cpp b/src/display/canvas-grid.cpp
index 92a1b0fb8..2ba748022 100644
--- a/src/display/canvas-grid.cpp
+++ b/src/display/canvas-grid.cpp
@@ -57,8 +57,7 @@ static gchar const *const grid_svgname[] = {
// Grid CanvasItem
static void grid_canvasitem_class_init (GridCanvasItemClass *klass);
static void grid_canvasitem_init (GridCanvasItem *grid);
-static void grid_canvasitem_destroy (GtkObject *object);
-
+static void grid_canvasitem_destroy(SPCanvasItem *object);
static void grid_canvasitem_update (SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
static void grid_canvasitem_render (SPCanvasItem *item, SPCanvasBuf *buf);
@@ -86,19 +85,13 @@ grid_canvasitem_get_type (void)
return grid_canvasitem_type;
}
-static void
-grid_canvasitem_class_init (GridCanvasItemClass *klass)
+static void grid_canvasitem_class_init(GridCanvasItemClass *klass)
{
- GtkObjectClass *object_class;
- SPCanvasItemClass *item_class;
-
- object_class = (GtkObjectClass *) klass;
- item_class = (SPCanvasItemClass *) klass;
+ SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass;
parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass);
- object_class->destroy = grid_canvasitem_destroy;
-
+ item_class->destroy = grid_canvasitem_destroy;
item_class->update = grid_canvasitem_update;
item_class->render = grid_canvasitem_render;
}
@@ -109,14 +102,13 @@ grid_canvasitem_init (GridCanvasItem *griditem)
griditem->grid = NULL;
}
-static void
-grid_canvasitem_destroy (GtkObject *object)
+static void grid_canvasitem_destroy(SPCanvasItem *object)
{
g_return_if_fail (object != NULL);
g_return_if_fail (INKSCAPE_IS_GRID_CANVASITEM (object));
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ if (SP_CANVAS_ITEM_CLASS(parent_class)->destroy)
+ (* SP_CANVAS_ITEM_CLASS(parent_class)->destroy) (object);
}
/**
@@ -184,7 +176,7 @@ CanvasGrid::~CanvasGrid()
}
while (canvasitems) {
- gtk_object_destroy(GTK_OBJECT(canvasitems->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(canvasitems->data));
canvasitems = g_slist_remove(canvasitems, canvasitems->data);
}
}
diff --git a/src/display/canvas-temporary-item.cpp b/src/display/canvas-temporary-item.cpp
index abe5f2f1b..551ea1536 100644
--- a/src/display/canvas-temporary-item.cpp
+++ b/src/display/canvas-temporary-item.cpp
@@ -17,6 +17,7 @@
#include "display/canvas-temporary-item.h"
#include <gtk/gtk.h>
+#include "display/sp-canvas-item.h"
namespace Inkscape {
namespace Display {
@@ -48,7 +49,7 @@ TemporaryItem::~TemporaryItem()
if (canvasitem) {
// destroying the item automatically hides it
- gtk_object_destroy (GTK_OBJECT (canvasitem));
+ sp_canvas_item_destroy(canvasitem);
canvasitem = NULL;
}
}
diff --git a/src/display/canvas-text.cpp b/src/display/canvas-text.cpp
index c7ca4ab16..ddc946d5d 100644
--- a/src/display/canvas-text.cpp
+++ b/src/display/canvas-text.cpp
@@ -28,7 +28,7 @@
static void sp_canvastext_class_init (SPCanvasTextClass *klass);
static void sp_canvastext_init (SPCanvasText *canvastext);
-static void sp_canvastext_destroy (GtkObject *object);
+static void sp_canvastext_destroy(SPCanvasItem *object);
static void sp_canvastext_update (SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
static void sp_canvastext_render (SPCanvasItem *item, SPCanvasBuf *buf);
@@ -56,16 +56,13 @@ sp_canvastext_get_type (void)
return type;
}
-static void
-sp_canvastext_class_init (SPCanvasTextClass *klass)
+static void sp_canvastext_class_init(SPCanvasTextClass *klass)
{
- GtkObjectClass *object_class = (GtkObjectClass *) klass;
SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass;
parent_class_ct = (SPCanvasItemClass*)g_type_class_peek_parent (klass);
- object_class->destroy = sp_canvastext_destroy;
-
+ item_class->destroy = sp_canvastext_destroy;
item_class->update = sp_canvastext_update;
item_class->render = sp_canvastext_render;
}
@@ -93,8 +90,7 @@ sp_canvastext_init (SPCanvasText *canvastext)
canvastext->border = 3; // must be a constant, and not proportional to any width, height, or fontsize to allow alignment with other text boxes
}
-static void
-sp_canvastext_destroy (GtkObject *object)
+static void sp_canvastext_destroy(SPCanvasItem *object)
{
g_return_if_fail (object != NULL);
g_return_if_fail (SP_IS_CANVASTEXT (object));
@@ -105,8 +101,8 @@ sp_canvastext_destroy (GtkObject *object)
canvastext->text = NULL;
canvastext->item = NULL;
- if (GTK_OBJECT_CLASS (parent_class_ct)->destroy)
- (* GTK_OBJECT_CLASS (parent_class_ct)->destroy) (object);
+ if (SP_CANVAS_ITEM_CLASS(parent_class_ct)->destroy)
+ (* SP_CANVAS_ITEM_CLASS(parent_class_ct)->destroy) (object);
}
static void
diff --git a/src/display/gnome-canvas-acetate.cpp b/src/display/gnome-canvas-acetate.cpp
index 0891836b5..2cd0f296d 100644
--- a/src/display/gnome-canvas-acetate.cpp
+++ b/src/display/gnome-canvas-acetate.cpp
@@ -17,7 +17,7 @@
static void sp_canvas_acetate_class_init (SPCanvasAcetateClass *klass);
static void sp_canvas_acetate_init (SPCanvasAcetate *acetate);
-static void sp_canvas_acetate_destroy (GtkObject *object);
+static void sp_canvas_acetate_destroy(SPCanvasItem *object);
static void sp_canvas_acetate_update (SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
static double sp_canvas_acetate_point (SPCanvasItem *item, Geom::Point p, SPCanvasItem **actual_item);
@@ -45,16 +45,11 @@ GType sp_canvas_acetate_get_type (void)
static void sp_canvas_acetate_class_init (SPCanvasAcetateClass *klass)
{
- GtkObjectClass *object_class;
- SPCanvasItemClass *item_class;
-
- object_class = (GtkObjectClass *) klass;
- item_class = (SPCanvasItemClass *) klass;
+ SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass;
parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass);
- object_class->destroy = sp_canvas_acetate_destroy;
-
+ item_class->destroy = sp_canvas_acetate_destroy;
item_class->update = sp_canvas_acetate_update;
item_class->point = sp_canvas_acetate_point;
}
@@ -64,13 +59,13 @@ static void sp_canvas_acetate_init (SPCanvasAcetate */*acetate*/)
/* Nothing here */
}
-static void sp_canvas_acetate_destroy (GtkObject *object)
+static void sp_canvas_acetate_destroy(SPCanvasItem *object)
{
g_return_if_fail (object != NULL);
g_return_if_fail (GNOME_IS_CANVAS_ACETATE (object));
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ if (SP_CANVAS_ITEM_CLASS(parent_class)->destroy)
+ (* SP_CANVAS_ITEM_CLASS(parent_class)->destroy) (object);
}
static void sp_canvas_acetate_update( SPCanvasItem *item, Geom::Affine const &/*affine*/, unsigned int /*flags*/ )
diff --git a/src/display/guideline.cpp b/src/display/guideline.cpp
index 652f4e2d7..d3385978a 100644
--- a/src/display/guideline.cpp
+++ b/src/display/guideline.cpp
@@ -31,7 +31,7 @@ using Inkscape::ControlManager;
static void sp_guideline_class_init(SPGuideLineClass *c);
static void sp_guideline_init(SPGuideLine *guideline);
-static void sp_guideline_destroy(GtkObject *object);
+static void sp_guideline_destroy(SPCanvasItem *object);
static void sp_guideline_update(SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
static void sp_guideline_render(SPCanvasItem *item, SPCanvasBuf *buf);
@@ -68,10 +68,8 @@ static void sp_guideline_class_init(SPGuideLineClass *c)
{
parent_class = (SPCanvasItemClass*) g_type_class_peek_parent(c);
- GtkObjectClass *object_class = (GtkObjectClass *) c;
- object_class->destroy = sp_guideline_destroy;
-
SPCanvasItemClass *item_class = (SPCanvasItemClass *) c;
+ item_class->destroy = sp_guideline_destroy;
item_class->update = sp_guideline_update;
item_class->render = sp_guideline_render;
item_class->point = sp_guideline_point;
@@ -90,7 +88,7 @@ static void sp_guideline_init(SPGuideLine *gl)
gl->label = NULL;
}
-static void sp_guideline_destroy(GtkObject *object)
+static void sp_guideline_destroy(SPCanvasItem *object)
{
g_return_if_fail (object != NULL);
g_return_if_fail (SP_IS_GUIDELINE (object));
@@ -98,13 +96,13 @@ static void sp_guideline_destroy(GtkObject *object)
//g_return_if_fail (SP_IS_CTRLPOINT(SP_GUIDELINE(object)->origin));
if (SP_GUIDELINE(object)->origin != NULL && SP_IS_CTRLPOINT(SP_GUIDELINE(object)->origin)) {
- gtk_object_destroy(GTK_OBJECT(SP_GUIDELINE(object)->origin));
+ sp_canvas_item_destroy(SP_GUIDELINE(object)->origin);
} else {
// FIXME: This branch shouldn't be reached (although it seems to be harmless).
//g_error("Why can it be that gl->origin is not a valid SPCtrlPoint?\n");
}
- GTK_OBJECT_CLASS(parent_class)->destroy(object);
+ SP_CANVAS_ITEM_CLASS(parent_class)->destroy(object);
}
static void sp_guideline_render(SPCanvasItem *item, SPCanvasBuf *buf)
@@ -290,7 +288,7 @@ void sp_guideline_set_sensitive(SPGuideLine *gl, int sensitive)
void sp_guideline_delete(SPGuideLine *gl)
{
//gtk_object_destroy(GTK_OBJECT(gl->origin));
- gtk_object_destroy(GTK_OBJECT(gl));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(gl));
}
static void
diff --git a/src/display/sodipodi-ctrl.cpp b/src/display/sodipodi-ctrl.cpp
index 725ead0d6..e21bdff15 100644
--- a/src/display/sodipodi-ctrl.cpp
+++ b/src/display/sodipodi-ctrl.cpp
@@ -28,7 +28,7 @@ enum {
static void sp_ctrl_class_init (SPCtrlClass *klass);
static void sp_ctrl_init (SPCtrl *ctrl);
-static void sp_ctrl_destroy (GtkObject *object);
+static void sp_ctrl_destroy(SPCanvasItem *object);
static void sp_ctrl_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
static void sp_ctrl_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
static void sp_ctrl_update (SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
@@ -63,19 +63,13 @@ sp_ctrl_get_type (void)
static void
sp_ctrl_class_init (SPCtrlClass *klass)
{
- GtkObjectClass *object_class;
- SPCanvasItemClass *item_class;
- GObjectClass *g_object_class;
-
- object_class = (GtkObjectClass *) klass;
- item_class = (SPCanvasItemClass *) klass;
- g_object_class = (GObjectClass *) klass;
+ SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass;
+ GObjectClass *g_object_class = (GObjectClass *) klass;
parent_class = (SPCanvasItemClass *)g_type_class_peek_parent (klass);
g_object_class->set_property = sp_ctrl_set_property;
g_object_class->get_property = sp_ctrl_get_property;
- object_class->destroy = sp_ctrl_destroy;
g_object_class_install_property (g_object_class,
ARG_SHAPE, g_param_spec_int ("shape", "shape", "Shape", 0, G_MAXINT, SP_CTRL_SHAPE_SQUARE, (GParamFlags) G_PARAM_READWRITE));
@@ -96,6 +90,7 @@ sp_ctrl_class_init (SPCtrlClass *klass)
g_object_class_install_property (g_object_class,
ARG_STROKE_COLOR, g_param_spec_int ("stroke_color", "stroke_color", "Stroke Color", G_MININT, G_MAXINT, 0x000000ff, (GParamFlags) G_PARAM_READWRITE));
+ item_class->destroy = sp_ctrl_destroy;
item_class->update = sp_ctrl_update;
item_class->render = sp_ctrl_render;
item_class->point = sp_ctrl_point;
@@ -268,23 +263,20 @@ sp_ctrl_init (SPCtrl *ctrl)
ctrl->_point = Geom::Point(0,0);
}
-static void
-sp_ctrl_destroy (GtkObject *object)
+static void sp_ctrl_destroy(SPCanvasItem *object)
{
- SPCtrl *ctrl;
-
g_return_if_fail (object != NULL);
g_return_if_fail (SP_IS_CTRL (object));
- ctrl = SP_CTRL (object);
+ SPCtrl *ctrl = SP_CTRL (object);
if (ctrl->cache) {
delete[] ctrl->cache;
ctrl->cache = NULL;
}
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ if (SP_CANVAS_ITEM_CLASS(parent_class)->destroy)
+ (* SP_CANVAS_ITEM_CLASS(parent_class)->destroy) (object);
}
static void
diff --git a/src/display/sodipodi-ctrlrect.cpp b/src/display/sodipodi-ctrlrect.cpp
index 3b50d0b5d..b0c997a92 100644
--- a/src/display/sodipodi-ctrlrect.cpp
+++ b/src/display/sodipodi-ctrlrect.cpp
@@ -28,7 +28,7 @@
static void sp_ctrlrect_class_init(SPCtrlRectClass *c);
static void sp_ctrlrect_init(CtrlRect *ctrlrect);
-static void sp_ctrlrect_destroy(GtkObject *object);
+static void sp_ctrlrect_destroy(SPCanvasItem *object);
static void sp_ctrlrect_update(SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
static void sp_ctrlrect_render(SPCanvasItem *item, SPCanvasBuf *buf);
@@ -61,13 +61,11 @@ GType sp_ctrlrect_get_type()
static void sp_ctrlrect_class_init(SPCtrlRectClass *c)
{
- GtkObjectClass *object_class = (GtkObjectClass *) c;
SPCanvasItemClass *item_class = (SPCanvasItemClass *) c;
parent_class = (SPCanvasItemClass*) g_type_class_peek_parent(c);
- object_class->destroy = sp_ctrlrect_destroy;
-
+ item_class->destroy = sp_ctrlrect_destroy;
item_class->update = sp_ctrlrect_update;
item_class->render = sp_ctrlrect_render;
}
@@ -77,10 +75,10 @@ static void sp_ctrlrect_init(CtrlRect *cr)
cr->init();
}
-static void sp_ctrlrect_destroy(GtkObject *object)
+static void sp_ctrlrect_destroy(SPCanvasItem *object)
{
- if (GTK_OBJECT_CLASS(parent_class)->destroy) {
- (* GTK_OBJECT_CLASS(parent_class)->destroy)(object);
+ if (SP_CANVAS_ITEM_CLASS(parent_class)->destroy) {
+ (* SP_CANVAS_ITEM_CLASS(parent_class)->destroy)(object);
}
}
diff --git a/src/display/sp-canvas-item.h b/src/display/sp-canvas-item.h
index ecbbd2758..f34ec453c 100644
--- a/src/display/sp-canvas-item.h
+++ b/src/display/sp-canvas-item.h
@@ -39,14 +39,17 @@ typedef struct _SPCanvasItemClass SPCanvasItemClass;
#define SP_TYPE_CANVAS_ITEM (SPCanvasItem::getType())
#define SP_CANVAS_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_CANVAS_ITEM, SPCanvasItem))
+#define SP_CANVAS_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_CANVAS_ITEM, SPCanvasItemClass))
#define SP_IS_CANVAS_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_CANVAS_ITEM))
#define SP_CANVAS_ITEM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), SP_TYPE_CANVAS_ITEM, SPCanvasItemClass))
+
/**
* An SPCanvasItem refers to a SPCanvas and to its parent item; it has
* four coordinates, a bounding rectangle, and a transformation matrix.
*/
-struct SPCanvasItem : public GtkObject {
+struct SPCanvasItem {
+ GInitiallyUnowned parent_instance;
static GType getType();
SPCanvas *canvas;
@@ -66,12 +69,16 @@ struct SPCanvasItem : public GtkObject {
gboolean visible;
gboolean need_update;
gboolean need_affine;
+
+ bool in_destruction;
};
/**
* The vtable of an SPCanvasItem.
*/
-struct _SPCanvasItemClass : public GtkObjectClass {
+struct _SPCanvasItemClass {
+ GInitiallyUnownedClass parent_class;
+
void (* update) (SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
void (* render) (SPCanvasItem *item, SPCanvasBuf *buf);
@@ -79,6 +86,16 @@ struct _SPCanvasItemClass : public GtkObjectClass {
int (* event) (SPCanvasItem *item, GdkEvent *event);
void (* viewbox_changed) (SPCanvasItem *item, Geom::IntRect const &new_area);
+
+ /* Default signal handler for the ::destroy signal, which is
+ * invoked to request that references to the widget be dropped.
+ * If an object class overrides destroy() in order to perform class
+ * specific destruction then it must still invoke its superclass'
+ * implementation of the method after it is finished with its
+ * own cleanup. (See gtk_widget_real_destroy() for an example of
+ * how to do this).
+ */
+ void (*destroy) (SPCanvasItem *object);
};
/**
@@ -96,6 +113,7 @@ void sp_canvas_item_lower(SPCanvasItem *item, int positions);
bool sp_canvas_item_is_visible(SPCanvasItem *item);
void sp_canvas_item_show(SPCanvasItem *item);
void sp_canvas_item_hide(SPCanvasItem *item);
+void sp_canvas_item_destroy(SPCanvasItem *item);
int sp_canvas_item_grab(SPCanvasItem *item, unsigned int event_mask, GdkCursor *cursor, guint32 etime);
void sp_canvas_item_ungrab(SPCanvasItem *item, guint32 etime);
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp
index eff3b7ac2..2d8bb55ad 100644
--- a/src/display/sp-canvas.cpp
+++ b/src/display/sp-canvas.cpp
@@ -90,7 +90,7 @@ struct SPCanvasGroup {
* Callback that destroys all items in group and calls group's virtual
* destroy() function.
*/
- static void destroy(GtkObject *object);
+ static void destroy(SPCanvasItem *object);
/**
* Update handler for canvas groups.
@@ -159,6 +159,14 @@ enum {
void trackLatency(GdkEvent const *event);
+enum {
+ DESTROY,
+ LAST_SIGNAL
+};
+
+void sp_canvas_item_base_class_init(SPCanvasItemClass *klass);
+void sp_canvas_item_base_class_finalize(SPCanvasItemClass *klass);
+
/**
* Initializes the SPCanvasItem vtable and the "event" signal.
*/
@@ -167,12 +175,17 @@ void sp_canvas_item_class_init(SPCanvasItemClass *klass);
/**
* Callback for initialization of SPCanvasItem.
*/
-void sp_canvas_item_init(SPCanvasItem *item);
+void sp_canvas_item_init(SPCanvasItem *item, SPCanvasItemClass *klass);
/**
* Callback that removes item from all referers and destroys it.
*/
-void sp_canvas_item_dispose(GObject *object);
+void sp_canvas_item_dispose(GObject *object);
+void sp_canvas_item_finalize(GObject *object);
+void sp_canvas_item_real_destroy(SPCanvasItem *object);
+
+static gpointer parent_class = NULL;
+static guint object_signals[LAST_SIGNAL] = { 0 };
/**
* Sets up the newly created SPCanvasItem.
@@ -228,7 +241,7 @@ public:
/**
* Destroy handler for SPCanvas.
*/
- static void destroy(GtkObject *object);
+ static void dispose(GObject *object);
/**
* The canvas widget's realize callback.
@@ -370,29 +383,43 @@ GtkWidgetClass *SPCanvasImpl::parentClass = 0;
GType SPCanvasItem::getType()
{
- static GType type = 0;
- if (!type) {
- static GTypeInfo const info = {
+ static GType object_type = 0;
+
+ if (!object_type) {
+ static GTypeInfo const object_info = {
sizeof(SPCanvasItemClass),
- NULL, NULL,
+ reinterpret_cast<GBaseInitFunc>(sp_canvas_item_base_class_init),
+ reinterpret_cast<GBaseFinalizeFunc>(sp_canvas_item_base_class_finalize),
reinterpret_cast<GClassInitFunc>(sp_canvas_item_class_init),
- NULL, NULL,
+ NULL, // class_finalize
+ NULL, // class_data
sizeof(SPCanvasItem),
- 0,
+ 16, // n_preallocs
reinterpret_cast<GInstanceInitFunc>(sp_canvas_item_init),
- NULL
+ NULL // value_table
};
- type = g_type_register_static(GTK_TYPE_OBJECT, "SPCanvasItem", &info, GTypeFlags(0));
+
+ object_type = g_type_register_static(G_TYPE_INITIALLY_UNOWNED,
+ "SPCanvasItem", &object_info, GTypeFlags(0));
}
- return type;
+ return object_type;
}
namespace {
+void sp_canvas_item_base_class_init(SPCanvasItemClass *klass)
+{
+}
+
+void sp_canvas_item_base_class_finalize(SPCanvasItemClass *klass)
+{
+}
+
void sp_canvas_item_class_init(SPCanvasItemClass *klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ parent_class = g_type_class_ref (G_TYPE_OBJECT);
item_signals[ITEM_EVENT] = g_signal_new ("event",
G_TYPE_FROM_CLASS (klass),
@@ -403,10 +430,21 @@ void sp_canvas_item_class_init(SPCanvasItemClass *klass)
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
- object_class->dispose = sp_canvas_item_dispose;
+ gobject_class->dispose = sp_canvas_item_dispose;
+ gobject_class->finalize = sp_canvas_item_finalize;
+ klass->destroy = sp_canvas_item_real_destroy;
+
+ object_signals[DESTROY] =
+ g_signal_new ("destroy",
+ G_TYPE_FROM_CLASS (gobject_class),
+ (GSignalFlags)(G_SIGNAL_RUN_CLEANUP | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS),
+ G_STRUCT_OFFSET (SPCanvasItemClass, destroy),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
}
-void sp_canvas_item_init(SPCanvasItem *item)
+void sp_canvas_item_init(SPCanvasItem *item, SPCanvasItemClass *klass)
{
item->xform = Geom::Affine(Geom::identity());
item->ctrlType = Inkscape::CTRL_TYPE_UNKNOWN;
@@ -416,6 +454,7 @@ void sp_canvas_item_init(SPCanvasItem *item)
// that should be initially invisible; examples of such items: node handles, the CtrlRect
// used for rubberbanding, path outline, etc.
item->visible = TRUE;
+ item->in_destruction = false;
}
} // namespace
@@ -473,49 +512,86 @@ static void redraw_if_visible(SPCanvasItem *item)
}
}
-namespace {
+void sp_canvas_item_destroy(SPCanvasItem *item)
+{
+ g_return_if_fail(SP_IS_CANVAS_ITEM(item));
+
+ if (!item->in_destruction)
+ g_object_run_dispose(G_OBJECT(item));
+}
+namespace {
void sp_canvas_item_dispose(GObject *object)
{
SPCanvasItem *item = SP_CANVAS_ITEM (object);
- // Hack: if this is a ctrlrect, move it to 0,0;
- // this redraws only the stroke of the rect to be deleted,
- // avoiding redraw of the entire area
- if (SP_IS_CTRLRECT(item)) {
- SP_CTRLRECT(object)->setRectangle(Geom::Rect(Geom::Point(0,0),Geom::Point(0,0)));
- SP_CTRLRECT(object)->update(item->xform, 0);
- } else {
- redraw_if_visible (item);
- }
- item->visible = FALSE;
-
- if (item == item->canvas->current_item) {
- item->canvas->current_item = NULL;
- item->canvas->need_repick = TRUE;
- }
-
- if (item == item->canvas->new_current_item) {
- item->canvas->new_current_item = NULL;
- item->canvas->need_repick = TRUE;
- }
-
- if (item == item->canvas->grabbed_item) {
- item->canvas->grabbed_item = NULL;
- gdk_pointer_ungrab (GDK_CURRENT_TIME);
- }
-
- if (item == item->canvas->focused_item) {
- item->canvas->focused_item = NULL;
- }
-
- if (item->parent) {
- SP_CANVAS_GROUP(item->parent)->remove(item);
+ /* guard against reinvocations during
+ * destruction with the in_destruction flag.
+ */
+ if (!item->in_destruction)
+ {
+ item->in_destruction=true;
+
+ // Hack: if this is a ctrlrect, move it to 0,0;
+ // this redraws only the stroke of the rect to be deleted,
+ // avoiding redraw of the entire area
+ if (SP_IS_CTRLRECT(item)) {
+ SP_CTRLRECT(object)->setRectangle(Geom::Rect(Geom::Point(0,0),Geom::Point(0,0)));
+ SP_CTRLRECT(object)->update(item->xform, 0);
+ } else {
+ redraw_if_visible (item);
+ }
+ item->visible = FALSE;
+
+ if (item == item->canvas->current_item) {
+ item->canvas->current_item = NULL;
+ item->canvas->need_repick = TRUE;
+ }
+
+ if (item == item->canvas->new_current_item) {
+ item->canvas->new_current_item = NULL;
+ item->canvas->need_repick = TRUE;
+ }
+
+ if (item == item->canvas->grabbed_item) {
+ item->canvas->grabbed_item = NULL;
+ gdk_pointer_ungrab (GDK_CURRENT_TIME);
+ }
+
+ if (item == item->canvas->focused_item) {
+ item->canvas->focused_item = NULL;
+ }
+
+ if (item->parent) {
+ SP_CANVAS_GROUP(item->parent)->remove(item);
+ }
+
+ g_signal_emit (object, object_signals[DESTROY], 0);
+ item->in_destruction = false;
+ }
+
+ G_OBJECT_CLASS(parent_class)->dispose(object);
+}
+
+void sp_canvas_item_real_destroy(SPCanvasItem *object)
+{
+ g_signal_handlers_destroy(object);
+}
+
+void sp_canvas_item_finalize(GObject *gobject)
+{
+ SPCanvasItem *object = SP_CANVAS_ITEM(gobject);
+
+ if (g_object_is_floating (object))
+ {
+ g_warning ("A floating object was finalized. This means that someone\n"
+ "called g_object_unref() on an object that had only a floating\n"
+ "reference; the initial floating reference is not owned by anyone\n"
+ "and must be removed with g_object_ref_sink().");
}
-
- G_OBJECT_CLASS(g_type_class_peek(g_type_parent(SPCanvasItem::getType())))->dispose(object);
+
+ G_OBJECT_CLASS (parent_class)->finalize (gobject);
}
-
} // namespace
/**
@@ -931,13 +1007,11 @@ GType SPCanvasGroup::getType(void)
void SPCanvasGroup::classInit(SPCanvasGroupClass *klass)
{
- GtkObjectClass *object_class = reinterpret_cast<GtkObjectClass *>(klass);
SPCanvasItemClass *item_class = reinterpret_cast<SPCanvasItemClass *>(klass);
parentClass = reinterpret_cast<SPCanvasItemClass*>(g_type_class_peek_parent(klass));
- object_class->destroy = SPCanvasGroup::destroy;
-
+ item_class->destroy = SPCanvasGroup::destroy;
item_class->update = SPCanvasGroup::update;
item_class->render = SPCanvasGroup::render;
item_class->point = SPCanvasGroup::point;
@@ -949,7 +1023,7 @@ void SPCanvasGroup::init(SPCanvasGroup * /*group*/)
// Nothing here
}
-void SPCanvasGroup::destroy(GtkObject *object)
+void SPCanvasGroup::destroy(SPCanvasItem *object)
{
g_return_if_fail(object != NULL);
g_return_if_fail(SP_IS_CANVAS_GROUP(object));
@@ -961,11 +1035,11 @@ void SPCanvasGroup::destroy(GtkObject *object)
SPCanvasItem *child = reinterpret_cast<SPCanvasItem *>(list->data);
list = list->next;
- gtk_object_destroy(GTK_OBJECT(child));
+ sp_canvas_item_destroy(child);
}
- if (GTK_OBJECT_CLASS(parentClass)->destroy) {
- (* GTK_OBJECT_CLASS(parentClass)->destroy)(object);
+ if (SP_CANVAS_ITEM_CLASS(parentClass)->destroy) {
+ (* SP_CANVAS_ITEM_CLASS(parentClass)->destroy)(object);
}
}
@@ -1141,12 +1215,12 @@ GType SPCanvas::getType(void)
void SPCanvasImpl::classInit(SPCanvasClass *klass)
{
- GtkObjectClass *object_class = (GtkObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
GtkWidgetClass *widget_class = (GtkWidgetClass *) klass;
parentClass = reinterpret_cast<GtkWidgetClass *>(g_type_class_peek_parent(klass));
- object_class->destroy = SPCanvasImpl::destroy;
+ object_class->dispose = SPCanvasImpl::dispose;
widget_class->realize = SPCanvasImpl::realize;
widget_class->unrealize = SPCanvasImpl::unrealize;
@@ -1235,7 +1309,7 @@ void SPCanvasImpl::shutdown_transients(SPCanvas *canvas)
remove_idle(canvas);
}
-void SPCanvasImpl::destroy(GtkObject *object)
+void SPCanvasImpl::dispose(GObject *object)
{
SPCanvas *canvas = SP_CANVAS(object);
@@ -1248,8 +1322,8 @@ void SPCanvasImpl::destroy(GtkObject *object)
#if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
canvas->cms_key.~ustring();
#endif
- if (GTK_OBJECT_CLASS(parentClass)->destroy) {
- (* GTK_OBJECT_CLASS(parentClass)->destroy)(object);
+ if (G_OBJECT_CLASS(parentClass)->dispose) {
+ (* G_OBJECT_CLASS(parentClass)->dispose)(object);
}
}
diff --git a/src/display/sp-ctrlcurve.cpp b/src/display/sp-ctrlcurve.cpp
index 5ef4c4d3f..d9b687f2e 100644
--- a/src/display/sp-ctrlcurve.cpp
+++ b/src/display/sp-ctrlcurve.cpp
@@ -25,7 +25,7 @@ namespace {
static void sp_ctrlcurve_class_init(SPCtrlCurveClass *klass, gpointer data);
static void sp_ctrlcurve_init(SPCtrlCurve *ctrlcurve, gpointer g_class);
-static void sp_ctrlcurve_destroy(GtkObject *object);
+static void sp_ctrlcurve_destroy(SPCanvasItem *object);
static void sp_ctrlcurve_update(SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
static void sp_ctrlcurve_render(SPCanvasItem *item, SPCanvasBuf *buf);
@@ -74,7 +74,7 @@ sp_ctrlcurve_init(SPCtrlCurve *ctrlcurve, gpointer /*g_class*/)
}
static void
-sp_ctrlcurve_destroy(GtkObject *object)
+sp_ctrlcurve_destroy(SPCanvasItem *object)
{
g_return_if_fail (object != NULL);
g_return_if_fail (SP_IS_CTRLCURVE (object));
@@ -83,8 +83,8 @@ sp_ctrlcurve_destroy(GtkObject *object)
ctrlcurve->item=NULL;
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ if (SP_CANVAS_ITEM_CLASS (parent_class)->destroy)
+ (* SP_CANVAS_ITEM_CLASS (parent_class)->destroy) (object);
}
static void
diff --git a/src/display/sp-ctrlline.cpp b/src/display/sp-ctrlline.cpp
index b7ad262b8..aef284c1a 100644
--- a/src/display/sp-ctrlline.cpp
+++ b/src/display/sp-ctrlline.cpp
@@ -32,7 +32,7 @@ namespace {
void sp_ctrlline_class_init(SPCtrlLineClass *klass, gpointer data);
void sp_ctrlline_init(SPCtrlLine *ctrlline, gpointer g_class);
-void sp_ctrlline_destroy(GtkObject *object);
+void sp_ctrlline_destroy(SPCanvasItem *object);
void sp_ctrlline_update(SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
void sp_ctrlline_render(SPCanvasItem *item, SPCanvasBuf *buf);
@@ -79,7 +79,7 @@ void sp_ctrlline_init(SPCtrlLine *ctrlline, gpointer /*g_class*/)
ctrlline->item=NULL;
}
-void sp_ctrlline_destroy(GtkObject *object)
+void sp_ctrlline_destroy(SPCanvasItem *object)
{
g_return_if_fail(object != NULL);
g_return_if_fail(SP_IS_CTRLLINE(object));
@@ -88,8 +88,8 @@ void sp_ctrlline_destroy(GtkObject *object)
ctrlline->item = NULL;
- if (GTK_OBJECT_CLASS (parent_class)->destroy) {
- (* GTK_OBJECT_CLASS (parent_class)->destroy)(object);
+ if(SP_CANVAS_ITEM_CLASS (parent_class)->destroy) {
+ (* SP_CANVAS_ITEM_CLASS (parent_class)->destroy)(object);
}
}
diff --git a/src/display/sp-ctrlpoint.cpp b/src/display/sp-ctrlpoint.cpp
index 3c8e2bc5d..d07e9385b 100644
--- a/src/display/sp-ctrlpoint.cpp
+++ b/src/display/sp-ctrlpoint.cpp
@@ -23,7 +23,7 @@
static void sp_ctrlpoint_class_init (SPCtrlPointClass *klass);
static void sp_ctrlpoint_init (SPCtrlPoint *ctrlpoint);
-static void sp_ctrlpoint_destroy (GtkObject *object);
+static void sp_ctrlpoint_destroy(SPCanvasItem *object);
static void sp_ctrlpoint_update (SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
static void sp_ctrlpoint_render (SPCanvasItem *item, SPCanvasBuf *buf);
@@ -50,16 +50,13 @@ sp_ctrlpoint_get_type (void)
return type;
}
-static void
-sp_ctrlpoint_class_init (SPCtrlPointClass *klass)
+static void sp_ctrlpoint_class_init(SPCtrlPointClass *klass)
{
- GtkObjectClass *object_class = (GtkObjectClass *) klass;
SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass;
parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass);
- object_class->destroy = sp_ctrlpoint_destroy;
-
+ item_class->destroy = sp_ctrlpoint_destroy;
item_class->update = sp_ctrlpoint_update;
item_class->render = sp_ctrlpoint_render;
}
@@ -73,8 +70,7 @@ sp_ctrlpoint_init (SPCtrlPoint *ctrlpoint)
ctrlpoint->radius = 2;
}
-static void
-sp_ctrlpoint_destroy (GtkObject *object)
+static void sp_ctrlpoint_destroy(SPCanvasItem *object)
{
g_return_if_fail (object != NULL);
g_return_if_fail (SP_IS_CTRLPOINT (object));
@@ -83,8 +79,8 @@ sp_ctrlpoint_destroy (GtkObject *object)
ctrlpoint->item=NULL;
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ if (SP_CANVAS_ITEM_CLASS(parent_class)->destroy)
+ (* SP_CANVAS_ITEM_CLASS(parent_class)->destroy) (object);
}
static void
diff --git a/src/display/sp-ctrlquadr.cpp b/src/display/sp-ctrlquadr.cpp
index 723075f74..ae15d620a 100644
--- a/src/display/sp-ctrlquadr.cpp
+++ b/src/display/sp-ctrlquadr.cpp
@@ -31,7 +31,7 @@ struct SPCtrlQuadrClass : public SPCanvasItemClass{};
static void sp_ctrlquadr_class_init (SPCtrlQuadrClass *klass);
static void sp_ctrlquadr_init (SPCtrlQuadr *ctrlquadr);
-static void sp_ctrlquadr_destroy (GtkObject *object);
+static void sp_ctrlquadr_destroy(SPCanvasItem *object);
static void sp_ctrlquadr_update (SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
static void sp_ctrlquadr_render (SPCanvasItem *item, SPCanvasBuf *buf);
@@ -61,13 +61,11 @@ sp_ctrlquadr_get_type (void)
static void
sp_ctrlquadr_class_init (SPCtrlQuadrClass *klass)
{
- GtkObjectClass *object_class = (GtkObjectClass *) klass;
SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass;
parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass);
- object_class->destroy = sp_ctrlquadr_destroy;
-
+ item_class->destroy = sp_ctrlquadr_destroy;
item_class->update = sp_ctrlquadr_update;
item_class->render = sp_ctrlquadr_render;
}
@@ -82,14 +80,13 @@ sp_ctrlquadr_init (SPCtrlQuadr *ctrlquadr)
ctrlquadr->p4 = Geom::Point(0, 0);
}
-static void
-sp_ctrlquadr_destroy (GtkObject *object)
+static void sp_ctrlquadr_destroy(SPCanvasItem *object)
{
g_return_if_fail (object != NULL);
g_return_if_fail (SP_IS_CTRLQUADR (object));
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ if (SP_CANVAS_ITEM_CLASS(parent_class)->destroy)
+ (* SP_CANVAS_ITEM_CLASS(parent_class)->destroy) (object);
}
static void
diff --git a/src/draw-anchor.cpp b/src/draw-anchor.cpp
index 591129d0b..2133d5de6 100644
--- a/src/draw-anchor.cpp
+++ b/src/draw-anchor.cpp
@@ -65,7 +65,7 @@ SPDrawAnchor *sp_draw_anchor_destroy(SPDrawAnchor *anchor)
anchor->curve->unref();
}
if (anchor->ctrl) {
- gtk_object_destroy(GTK_OBJECT(anchor->ctrl));
+ sp_canvas_item_destroy(anchor->ctrl);
}
g_free(anchor);
return NULL;
diff --git a/src/draw-context.cpp b/src/draw-context.cpp
index cf47fed29..fb7a60703 100644
--- a/src/draw-context.cpp
+++ b/src/draw-context.cpp
@@ -537,7 +537,7 @@ void spdc_concat_colors_and_flush(SPDrawContext *dc, gboolean forceclosed)
// Green
dc->green_curve = new SPCurve();
while (dc->green_bpaths) {
- gtk_object_destroy(GTK_OBJECT(dc->green_bpaths->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->green_bpaths->data));
dc->green_bpaths = g_slist_remove(dc->green_bpaths, dc->green_bpaths->data);
}
@@ -732,7 +732,7 @@ static void spdc_free_colors(SPDrawContext *dc)
{
// Red
if (dc->red_bpath) {
- gtk_object_destroy(GTK_OBJECT(dc->red_bpath));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->red_bpath));
dc->red_bpath = NULL;
}
if (dc->red_curve) {
@@ -741,7 +741,7 @@ static void spdc_free_colors(SPDrawContext *dc)
// Blue
if (dc->blue_bpath) {
- gtk_object_destroy(GTK_OBJECT(dc->blue_bpath));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->blue_bpath));
dc->blue_bpath = NULL;
}
if (dc->blue_curve) {
@@ -750,7 +750,7 @@ static void spdc_free_colors(SPDrawContext *dc)
// Green
while (dc->green_bpaths) {
- gtk_object_destroy(GTK_OBJECT(dc->green_bpaths->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->green_bpaths->data));
dc->green_bpaths = g_slist_remove(dc->green_bpaths, dc->green_bpaths->data);
}
if (dc->green_curve) {
diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp
index be0379813..312a96171 100644
--- a/src/dropper-context.cpp
+++ b/src/dropper-context.cpp
@@ -143,7 +143,7 @@ static void sp_dropper_context_finish(SPEventContext *ec)
}
if (dc->area) {
- gtk_object_destroy(GTK_OBJECT(dc->area));
+ sp_canvas_item_destroy(dc->area);
dc->area = NULL;
}
}
diff --git a/src/dyna-draw-context.cpp b/src/dyna-draw-context.cpp
index 9e204cc14..ddd37af91 100644
--- a/src/dyna-draw-context.cpp
+++ b/src/dyna-draw-context.cpp
@@ -181,7 +181,7 @@ sp_dyna_draw_context_dispose(GObject *object)
SPDynaDrawContext *ddc = SP_DYNA_DRAW_CONTEXT(object);
if (ddc->hatch_area) {
- gtk_object_destroy(GTK_OBJECT(ddc->hatch_area));
+ sp_canvas_item_destroy(ddc->hatch_area);
ddc->hatch_area = NULL;
}
@@ -519,7 +519,7 @@ calligraphic_cancel(SPDynaDrawContext *dc)
sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), 0);
/* Remove all temporary line segments */
while (dc->segments) {
- gtk_object_destroy(GTK_OBJECT(dc->segments->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->segments->data));
dc->segments = g_slist_remove(dc->segments, dc->segments->data);
}
/* reset accumulated curve */
@@ -836,7 +836,7 @@ sp_dyna_draw_context_root_handler(SPEventContext *event_context,
/* Remove all temporary line segments */
while (dc->segments) {
- gtk_object_destroy(GTK_OBJECT(dc->segments->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->segments->data));
dc->segments = g_slist_remove(dc->segments, dc->segments->data);
}
diff --git a/src/eraser-context.cpp b/src/eraser-context.cpp
index 07e28ec20..b88329028 100644
--- a/src/eraser-context.cpp
+++ b/src/eraser-context.cpp
@@ -462,7 +462,7 @@ eraser_cancel(SPEraserContext *dc)
sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), 0);
/* Remove all temporary line segments */
while (dc->segments) {
- gtk_object_destroy(GTK_OBJECT(dc->segments->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->segments->data));
dc->segments = g_slist_remove(dc->segments, dc->segments->data);
}
/* reset accumulated curve */
@@ -569,7 +569,7 @@ sp_eraser_context_root_handler(SPEventContext *event_context,
/* Remove all temporary line segments */
while (dc->segments) {
- gtk_object_destroy(GTK_OBJECT(dc->segments->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->segments->data));
dc->segments = g_slist_remove(dc->segments, dc->segments->data);
}
diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp
index dbd9da517..a77eb5e2a 100644
--- a/src/gradient-drag.cpp
+++ b/src/gradient-drag.cpp
@@ -696,7 +696,7 @@ GrDrag::~GrDrag()
this->selected = NULL;
for (GSList *l = this->lines; l != NULL; l = l->next) {
- gtk_object_destroy( GTK_OBJECT (l->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(l->data));
}
g_slist_free (this->lines);
this->lines = NULL;
@@ -2130,7 +2130,7 @@ void GrDrag::updateLines()
{
// delete old lines
for (GSList const *i = this->lines; i != NULL; i = i->next) {
- gtk_object_destroy( GTK_OBJECT(i->data) );
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(i->data));
}
g_slist_free(this->lines);
this->lines = NULL;
diff --git a/src/ink-comboboxentry-action.cpp b/src/ink-comboboxentry-action.cpp
index 6b5266709..ad9f775c4 100644
--- a/src/ink-comboboxentry-action.cpp
+++ b/src/ink-comboboxentry-action.cpp
@@ -569,7 +569,7 @@ void ink_comboboxentry_action_popup_disable( Ink_ComboBoxEntry_Action* action )
action->popup = false;
if( action->entry_completion ) {
- gtk_object_destroy( GTK_OBJECT( action->entry_completion ) );
+ gtk_widget_destroy(GTK_WIDGET(action->entry_completion));
action->entry_completion = 0;
}
}
diff --git a/src/knot.cpp b/src/knot.cpp
index 27a4c83d9..e6fd5c044 100644
--- a/src/knot.cpp
+++ b/src/knot.cpp
@@ -239,7 +239,7 @@ static void sp_knot_dispose(GObject *object)
}
if (knot->item) {
- gtk_object_destroy (GTK_OBJECT (knot->item));
+ sp_canvas_item_destroy(knot->item);
knot->item = NULL;
}
diff --git a/src/lpe-tool-context.cpp b/src/lpe-tool-context.cpp
index c4d38c400..60588abf3 100644
--- a/src/lpe-tool-context.cpp
+++ b/src/lpe-tool-context.cpp
@@ -124,7 +124,7 @@ sp_lpetool_context_dispose(GObject *object)
delete lc->shape_editor;
if (lc->canvas_bbox) {
- gtk_object_destroy(GTK_OBJECT(lc->canvas_bbox));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(lc->canvas_bbox));
lc->canvas_bbox = NULL;
}
@@ -412,7 +412,7 @@ void
lpetool_context_reset_limiting_bbox(SPLPEToolContext *lc)
{
if (lc->canvas_bbox) {
- gtk_object_destroy(GTK_OBJECT(lc->canvas_bbox));
+ sp_canvas_item_destroy(lc->canvas_bbox);
lc->canvas_bbox = NULL;
}
@@ -497,7 +497,7 @@ lpetool_delete_measuring_items(SPLPEToolContext *lc)
{
std::map<SPPath *, SPCanvasItem*>::iterator i;
for (i = lc->measuring_items->begin(); i != lc->measuring_items->end(); ++i) {
- gtk_object_destroy(GTK_OBJECT(i->second));
+ sp_canvas_item_destroy(i->second);
}
lc->measuring_items->clear();
}
diff --git a/src/pen-context.cpp b/src/pen-context.cpp
index b97fc5527..a8aedb649 100644
--- a/src/pen-context.cpp
+++ b/src/pen-context.cpp
@@ -169,19 +169,19 @@ static void sp_pen_context_dispose(GObject *object)
SPPenContext *pc = SP_PEN_CONTEXT(object);
if (pc->c0) {
- gtk_object_destroy(GTK_OBJECT(pc->c0));
+ sp_canvas_item_destroy(pc->c0);
pc->c0 = NULL;
}
if (pc->c1) {
- gtk_object_destroy(GTK_OBJECT(pc->c1));
+ sp_canvas_item_destroy(pc->c1);
pc->c1 = NULL;
}
if (pc->cl0) {
- gtk_object_destroy(GTK_OBJECT(pc->cl0));
+ sp_canvas_item_destroy(pc->cl0);
pc->cl0 = NULL;
}
if (pc->cl1) {
- gtk_object_destroy(GTK_OBJECT(pc->cl1));
+ sp_canvas_item_destroy(pc->cl1);
pc->cl1 = NULL;
}
@@ -871,7 +871,7 @@ void pen_redraw_all (SPPenContext *const pc)
if (pc->green_bpaths) {
// remove old piecewise green canvasitems
while (pc->green_bpaths) {
- gtk_object_destroy(GTK_OBJECT(pc->green_bpaths->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(pc->green_bpaths->data));
pc->green_bpaths = g_slist_remove(pc->green_bpaths, pc->green_bpaths->data);
}
// one canvas bpath for all of green_curve
@@ -1135,7 +1135,7 @@ static gint pen_handle_key_press(SPPenContext *const pc, GdkEvent *event)
// Destroy topmost green bpath
if (pc->green_bpaths) {
if (pc->green_bpaths->data)
- gtk_object_destroy(GTK_OBJECT(pc->green_bpaths->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(pc->green_bpaths->data));
pc->green_bpaths = g_slist_remove(pc->green_bpaths, pc->green_bpaths->data);
}
// Get last segment
@@ -1182,7 +1182,7 @@ static void spdc_reset_colors(SPPenContext *pc)
sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(pc->blue_bpath), NULL);
// Green
while (pc->green_bpaths) {
- gtk_object_destroy(GTK_OBJECT(pc->green_bpaths->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(pc->green_bpaths->data));
pc->green_bpaths = g_slist_remove(pc->green_bpaths, pc->green_bpaths->data);
}
pc->green_curve->reset();
diff --git a/src/pencil-context.cpp b/src/pencil-context.cpp
index c93feb4d4..866231e96 100644
--- a/src/pencil-context.cpp
+++ b/src/pencil-context.cpp
@@ -553,7 +553,7 @@ pencil_cancel (SPPencilContext *const pc)
pc->red_curve->reset();
sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(pc->red_bpath), NULL);
while (pc->green_bpaths) {
- gtk_object_destroy(GTK_OBJECT(pc->green_bpaths->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(pc->green_bpaths->data));
pc->green_bpaths = g_slist_remove(pc->green_bpaths, pc->green_bpaths->data);
}
pc->green_curve->reset();
diff --git a/src/rubberband.cpp b/src/rubberband.cpp
index 89ac04ee6..08492837a 100644
--- a/src/rubberband.cpp
+++ b/src/rubberband.cpp
@@ -32,14 +32,14 @@ Inkscape::Rubberband::Rubberband(SPDesktop *dt)
void Inkscape::Rubberband::delete_canvas_items()
{
if (_rect) {
- GtkObject *temp = _rect;
+ SPCanvasItem *temp = _rect;
_rect = NULL;
- gtk_object_destroy(temp);
+ sp_canvas_item_destroy(temp);
}
if (_touchpath) {
- GtkObject *temp = _touchpath;
+ SPCanvasItem *temp = _touchpath;
_touchpath = NULL;
- gtk_object_destroy(temp);
+ sp_canvas_item_destroy(temp);
}
}
diff --git a/src/selcue.cpp b/src/selcue.cpp
index 9a2d105ae..4c35307f7 100644
--- a/src/selcue.cpp
+++ b/src/selcue.cpp
@@ -47,12 +47,12 @@ Inkscape::SelCue::~SelCue()
_sel_modified_connection.disconnect();
for (std::vector<SPCanvasItem*>::iterator i = _item_bboxes.begin(); i != _item_bboxes.end(); ++i) {
- gtk_object_destroy(*i);
+ sp_canvas_item_destroy(*i);
}
_item_bboxes.clear();
for (std::vector<SPCanvasItem*>::iterator i = _text_baselines.begin(); i != _text_baselines.end(); ++i) {
- gtk_object_destroy(*i);
+ sp_canvas_item_destroy(*i);
}
_text_baselines.clear();
}
@@ -104,7 +104,7 @@ void Inkscape::SelCue::_updateItemBboxes()
void Inkscape::SelCue::_newItemBboxes()
{
for (std::vector<SPCanvasItem*>::iterator i = _item_bboxes.begin(); i != _item_bboxes.end(); ++i) {
- gtk_object_destroy(*i);
+ sp_canvas_item_destroy(*i);
}
_item_bboxes.clear();
@@ -167,7 +167,7 @@ void Inkscape::SelCue::_newItemBboxes()
void Inkscape::SelCue::_newTextBaselines()
{
for (std::vector<SPCanvasItem*>::iterator i = _text_baselines.begin(); i != _text_baselines.end(); ++i) {
- gtk_object_destroy(*i);
+ sp_canvas_item_destroy(*i);
}
_text_baselines.clear();
diff --git a/src/seltrans.cpp b/src/seltrans.cpp
index 4b0ef284b..88a4a536d 100644
--- a/src/seltrans.cpp
+++ b/src/seltrans.cpp
@@ -196,16 +196,16 @@ Inkscape::SelTrans::~SelTrans()
}
if (_norm) {
- gtk_object_destroy(GTK_OBJECT(_norm));
+ sp_canvas_item_destroy(_norm);
_norm = NULL;
}
if (_grip) {
- gtk_object_destroy(GTK_OBJECT(_grip));
+ sp_canvas_item_destroy(_grip);
_grip = NULL;
}
for (int i = 0; i < 4; i++) {
if (_l[i]) {
- gtk_object_destroy(_l[i]);
+ sp_canvas_item_destroy(_l[i]);
_l[i] = NULL;
}
}
diff --git a/src/spray-context.cpp b/src/spray-context.cpp
index a575affc4..7ac04db58 100644
--- a/src/spray-context.cpp
+++ b/src/spray-context.cpp
@@ -200,7 +200,7 @@ static void sp_spray_context_dispose(GObject *object)
tc->style_set_connection.~connection();
if (tc->dilate_area) {
- gtk_object_destroy(GTK_OBJECT(tc->dilate_area));
+ sp_canvas_item_destroy(tc->dilate_area);
tc->dilate_area = NULL;
}
diff --git a/src/text-context.cpp b/src/text-context.cpp
index ae5dac88c..e8d03eb71 100644
--- a/src/text-context.cpp
+++ b/src/text-context.cpp
@@ -302,24 +302,24 @@ static void sp_text_context_finish(SPEventContext *ec)
}
if (tc->cursor) {
- gtk_object_destroy(tc->cursor);
+ sp_canvas_item_destroy(tc->cursor);
tc->cursor = NULL;
}
if (tc->indicator) {
- gtk_object_destroy(GTK_OBJECT(tc->indicator));
+ sp_canvas_item_destroy(tc->indicator);
tc->indicator = NULL;
}
if (tc->frame) {
- gtk_object_destroy(GTK_OBJECT(tc->frame));
+ sp_canvas_item_destroy(tc->frame);
tc->frame = NULL;
}
for (std::vector<SPCanvasItem*>::iterator it = tc->text_selection_quads.begin() ;
it != tc->text_selection_quads.end() ; ++it) {
sp_canvas_item_hide(*it);
- gtk_object_destroy(*it);
+ sp_canvas_item_destroy(*it);
}
tc->text_selection_quads.clear();
}
@@ -1674,7 +1674,7 @@ static void sp_text_context_update_text_selection(SPTextContext *tc)
for (std::vector<SPCanvasItem*>::iterator it = tc->text_selection_quads.begin() ; it != tc->text_selection_quads.end() ; it++) {
sp_canvas_item_hide(*it);
- gtk_object_destroy(*it);
+ sp_canvas_item_destroy(*it);
}
tc->text_selection_quads.clear();
diff --git a/src/tweak-context.cpp b/src/tweak-context.cpp
index f6bbd6992..c06e0280a 100644
--- a/src/tweak-context.cpp
+++ b/src/tweak-context.cpp
@@ -169,7 +169,7 @@ sp_tweak_context_dispose(GObject *object)
tc->style_set_connection.~connection();
if (tc->dilate_area) {
- gtk_object_destroy(GTK_OBJECT(tc->dilate_area));
+ sp_canvas_item_destroy(tc->dilate_area);
tc->dilate_area = NULL;
}
diff --git a/src/ui/dialog/spellcheck.cpp b/src/ui/dialog/spellcheck.cpp
index 85320618b..0da28061e 100644
--- a/src/ui/dialog/spellcheck.cpp
+++ b/src/ui/dialog/spellcheck.cpp
@@ -220,7 +220,7 @@ void SpellCheck::clearRects()
{
for (GSList *it = _rects; it; it = it->next) {
sp_canvas_item_hide((SPCanvasItem*) it->data);
- gtk_object_destroy((SPCanvasItem*) it->data);
+ sp_canvas_item_destroy((SPCanvasItem*) it->data);
}
g_slist_free(_rects);
_rects = NULL;
@@ -729,7 +729,7 @@ SpellCheck::deleteLastRect ()
{
if (_rects) {
sp_canvas_item_hide(SP_CANVAS_ITEM(_rects->data));
- gtk_object_destroy(GTK_OBJECT(_rects->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(_rects->data));
_rects = _rects->next; // pop latest-prepended rect
}
}
diff --git a/src/ui/tool/control-point.cpp b/src/ui/tool/control-point.cpp
index c3e7ccbe6..e1ee71d53 100644
--- a/src/ui/tool/control-point.cpp
+++ b/src/ui/tool/control-point.cpp
@@ -115,7 +115,7 @@ ControlPoint::~ControlPoint()
g_signal_handler_disconnect(G_OBJECT(_canvas_item), _event_handler_connection);
//sp_canvas_item_hide(_canvas_item);
- gtk_object_destroy(_canvas_item);
+ sp_canvas_item_destroy(_canvas_item);
}
void ControlPoint::_commonInit()
diff --git a/src/ui/tool/node-tool.cpp b/src/ui/tool/node-tool.cpp
index 76b309ad6..8dfee6e65 100644
--- a/src/ui/tool/node-tool.cpp
+++ b/src/ui/tool/node-tool.cpp
@@ -158,7 +158,7 @@ SPCanvasGroup *create_control_group(SPDesktop *d)
void destroy_group(SPCanvasGroup *g)
{
- gtk_object_destroy(GTK_OBJECT(g));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(g));
}
void ink_node_tool_class_init(InkNodeToolClass *klass)
diff --git a/src/ui/tool/node.cpp b/src/ui/tool/node.cpp
index 8098cbee2..136309a8e 100644
--- a/src/ui/tool/node.cpp
+++ b/src/ui/tool/node.cpp
@@ -120,7 +120,7 @@ Handle::Handle(NodeSharedData const &data, Geom::Point const &initial_pos, Node
Handle::~Handle()
{
//sp_canvas_item_hide(_handle_line);
- gtk_object_destroy(_handle_line);
+ sp_canvas_item_destroy(_handle_line);
}
void Handle::setVisible(bool v)
diff --git a/src/ui/tool/path-manipulator.cpp b/src/ui/tool/path-manipulator.cpp
index e292a9347..35eb23f42 100644
--- a/src/ui/tool/path-manipulator.cpp
+++ b/src/ui/tool/path-manipulator.cpp
@@ -152,7 +152,7 @@ PathManipulator::~PathManipulator()
{
delete _dragpoint;
delete _observer;
- gtk_object_destroy(_outline);
+ sp_canvas_item_destroy(_outline);
_spcurve->unref();
clear();
}
diff --git a/src/ui/tool/selector.cpp b/src/ui/tool/selector.cpp
index 5122d3c0f..4a414e4ea 100644
--- a/src/ui/tool/selector.cpp
+++ b/src/ui/tool/selector.cpp
@@ -47,7 +47,7 @@ public:
}
~SelectorPoint() {
- gtk_object_destroy(_rubber);
+ sp_canvas_item_destroy(_rubber);
}
SPDesktop *desktop() { return _desktop; }
diff --git a/src/ui/widget/ruler.cpp b/src/ui/widget/ruler.cpp
index 189f20093..b97ef4312 100644
--- a/src/ui/widget/ruler.cpp
+++ b/src/ui/widget/ruler.cpp
@@ -177,7 +177,7 @@ Ruler::on_button_release_event(GdkEventButton *evb)
Gdk::Window::pointer_ungrab(evb->time);
#endif
- gtk_object_destroy(GTK_OBJECT(_guide));
+ sp_canvas_item_destroy(_guide);
_guide = 0;
_dragging = false;
diff --git a/src/vanishing-point.cpp b/src/vanishing-point.cpp
index 20758d37c..f342f2c69 100644
--- a/src/vanishing-point.cpp
+++ b/src/vanishing-point.cpp
@@ -523,7 +523,7 @@ VPDrag::~VPDrag()
this->draggers = NULL;
for (GSList const *i = this->lines; i != NULL; i = i->next) {
- gtk_object_destroy( GTK_OBJECT (i->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(i->data));
}
g_slist_free (this->lines);
this->lines = NULL;
@@ -597,7 +597,7 @@ VPDrag::updateLines ()
{
// delete old lines
for (GSList const *i = this->lines; i != NULL; i = i->next) {
- gtk_object_destroy( GTK_OBJECT (i->data));
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(i->data));
}
g_slist_free (this->lines);
this->lines = NULL;