diff options
| author | Alex Valavanis <valavanisalex@gmail.com> | 2012-06-09 13:40:09 +0000 |
|---|---|---|
| committer | Alex Valavanis <valavanisalex@gmail.com> | 2012-06-09 13:40:09 +0000 |
| commit | 62dd6c138e3547689acdcccbb289d822b458cdb0 (patch) | |
| tree | df7a4a357c7483216c7d805406bd79ff3c21c7c1 /src | |
| parent | Move measure angle string to keep it visible when angle is small. (diff) | |
| download | inkscape-62dd6c138e3547689acdcccbb289d822b458cdb0.tar.gz inkscape-62dd6c138e3547689acdcccbb289d822b458cdb0.zip | |
Stop deriving SPCanvasItem from GtkObject
(bzr r11469.1.1)
Diffstat (limited to 'src')
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; |
