summaryrefslogtreecommitdiffstats
path: root/src/desktop.cpp
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2008-03-02 13:38:15 +0000
committerjohanengelen <johanengelen@users.sourceforge.net>2008-03-02 13:38:15 +0000
commitacae310d49358ac8de885fa8692caf5e4067574c (patch)
treeb19affe735ea558718e378184a11031bbe44c328 /src/desktop.cpp
parentwarning cleanup (diff)
downloadinkscape-acae310d49358ac8de885fa8692caf5e4067574c.tar.gz
inkscape-acae310d49358ac8de885fa8692caf5e4067574c.zip
NEW: temporary on-canvas indicators
(bzr r4918)
Diffstat (limited to 'src/desktop.cpp')
-rw-r--r--src/desktop.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp
index d2547f5a6..65025027a 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -12,7 +12,7 @@
* Johan Engelen <j.b.c.engelen@ewi.utwente.nl>
*
* Copyright (C) 2007 Jon A. Cruz
- * Copyright (C) 2006-2007 Johan Engelen
+ * Copyright (C) 2006-2008 Johan Engelen
* Copyright (C) 2006 John Bintz
* Copyright (C) 2004 MenTaLguY
* Copyright (C) 1999-2002 Lauris Kaplinski
@@ -77,6 +77,7 @@
#include "display/gnome-canvas-acetate.h"
#include "display/sodipodi-ctrlrect.h"
#include "display/sp-canvas-util.h"
+#include "display/canvas-temporary-item-list.h"
#include "libnr/nr-matrix-div.h"
#include "libnr/nr-rect-ops.h"
#include "ui/dialog/dialog-manager.h"
@@ -115,6 +116,7 @@ SPDesktop::SPDesktop() :
event_context( 0 ),
layer_manager( 0 ),
event_log( 0 ),
+ temporary_item_list( 0 ),
acetate( 0 ),
main( 0 ),
gridgroup( 0 ),
@@ -122,6 +124,7 @@ SPDesktop::SPDesktop() :
drawing( 0 ),
sketch( 0 ),
controls( 0 ),
+ tempgroup ( 0 ),
table( 0 ),
page( 0 ),
page_border( 0 ),
@@ -217,6 +220,7 @@ SPDesktop::init (SPNamedView *nv, SPCanvas *aCanvas)
guides = (SPCanvasGroup *) sp_canvas_item_new (main, SP_TYPE_CANVAS_GROUP, NULL);
sketch = (SPCanvasGroup *) sp_canvas_item_new (main, SP_TYPE_CANVAS_GROUP, NULL);
controls = (SPCanvasGroup *) sp_canvas_item_new (main, SP_TYPE_CANVAS_GROUP, NULL);
+ tempgroup = (SPCanvasGroup *) sp_canvas_item_new (main, SP_TYPE_CANVAS_GROUP, NULL);
/* Push select tool to the bottom of stack */
/** \todo
@@ -310,11 +314,16 @@ SPDesktop::init (SPNamedView *nv, SPCanvas *aCanvas)
layer_manager = new Inkscape::LayerManager( this );
showGrids(namedview->grids_visible, false);
+
+ temporary_item_list = new Inkscape::Display::TemporaryItemList( this );
}
void SPDesktop::destroy()
{
+ delete temporary_item_list;
+ temporary_item_list = NULL;
+
namedview->hide(this);
_activate_connection.disconnect();
@@ -368,6 +377,25 @@ SPDesktop::~SPDesktop() {}
//--------------------------------------------------------------------
/* Public methods */
+
+/** Note that lifetime is measured in milliseconds
+* it is perfectly safe to ignore the returned pointer: the object is deleted by itself, so don't delete it elsewhere!
+* The return value should only be used as argument for SPDesktop::remove_temporary_canvasitem, because the object might be deleted already.
+*/
+Inkscape::Display::TemporaryItem *
+SPDesktop::add_temporary_canvasitem (SPCanvasItem *item, guint lifetime)
+{
+ return temporary_item_list->add_item(item, lifetime);
+}
+
+/** It is perfectly safe to call this function while the object has already been deleted due to a timeout.
+*/
+void
+SPDesktop::remove_temporary_canvasitem (Inkscape::Display::TemporaryItem * tempitem)
+{
+ temporary_item_list->delete_item(tempitem);
+}
+
void SPDesktop::setDisplayModeNormal()
{
SP_CANVAS_ARENA (drawing)->arena->rendermode = RENDERMODE_NORMAL;