summaryrefslogtreecommitdiffstats
path: root/src/dialogs
diff options
context:
space:
mode:
authorbulia byak <buliabyak@gmail.com>2008-09-16 16:35:18 +0000
committerbuliabyak <buliabyak@users.sourceforge.net>2008-09-16 16:35:18 +0000
commitde67c22091be60367cd36a0985279373a6d9897a (patch)
tree02fc356e6dd8963f3e865f782fbc91be7c63a295 /src/dialogs
parentthis item is not hide'd, so unref it instead to prevent leak (diff)
downloadinkscape-de67c22091be60367cd36a0985279373a6d9897a.tar.gz
inkscape-de67c22091be60367cd36a0985279373a6d9897a.zip
hide the item shown for tracing, fixes leak
(bzr r6821)
Diffstat (limited to 'src/dialogs')
-rw-r--r--src/dialogs/clonetiler.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/dialogs/clonetiler.cpp b/src/dialogs/clonetiler.cpp
index f3524d65e..9da7e0571 100644
--- a/src/dialogs/clonetiler.cpp
+++ b/src/dialogs/clonetiler.cpp
@@ -854,6 +854,7 @@ static NRArena const *trace_arena = NULL;
static unsigned trace_visionkey;
static NRArenaItem *trace_root;
static gdouble trace_zoom;
+static SPDocument *trace_doc;
static void
clonetiler_trace_hide_tiled_clones_recursively (SPObject *from)
@@ -874,15 +875,16 @@ clonetiler_trace_setup (SPDocument *doc, gdouble zoom, SPItem *original)
trace_arena = NRArena::create();
/* Create ArenaItem and set transform */
trace_visionkey = sp_item_display_key_new(1);
- trace_root = sp_item_invoke_show( SP_ITEM(SP_DOCUMENT_ROOT (doc)),
+ trace_doc = doc;
+ trace_root = sp_item_invoke_show( SP_ITEM(SP_DOCUMENT_ROOT (trace_doc)),
(NRArena *) trace_arena, trace_visionkey, SP_ITEM_SHOW_DISPLAY);
// hide the (current) original and any tiled clones, we only want to pick the background
sp_item_invoke_hide(original, trace_visionkey);
- clonetiler_trace_hide_tiled_clones_recursively (SP_OBJECT(SP_DOCUMENT_ROOT (doc)));
+ clonetiler_trace_hide_tiled_clones_recursively (SP_OBJECT(SP_DOCUMENT_ROOT (trace_doc)));
- sp_document_root (doc)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
- sp_document_ensure_up_to_date(doc);
+ sp_document_root (trace_doc)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
+ sp_document_ensure_up_to_date(trace_doc);
trace_zoom = zoom;
}
@@ -964,6 +966,9 @@ clonetiler_trace_pick (NR::Rect box)
static void
clonetiler_trace_finish ()
{
+ if (trace_doc) {
+ sp_item_invoke_hide(SP_ITEM(sp_document_root(trace_doc)), trace_visionkey);
+ }
if (trace_arena) {
((NRObject *) trace_arena)->unreference();
trace_arena = NULL;