summaryrefslogtreecommitdiff
path: root/src/data/edge.cpp
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2018-11-22 22:09:15 +0100
committerAleks Kissinger <aleks0@gmail.com>2018-11-22 22:09:15 +0100
commitd6c0003f7589e83c8f9ac6734f9b27554358a9f5 (patch)
tree6f137e784cb0ee4f9caa1b17f0f2d78438d75a57 /src/data/edge.cpp
parente51b93cac7213ffd6448f7c27070ac0da7e89b6f (diff)
deferred deletion for all (potential) listeners
Diffstat (limited to 'src/data/edge.cpp')
-rw-r--r--src/data/edge.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/data/edge.cpp b/src/data/edge.cpp
index 0ae566b..a9acd85 100644
--- a/src/data/edge.cpp
+++ b/src/data/edge.cpp
@@ -26,7 +26,7 @@
Edge::Edge(Node *s, Node *t, QObject *parent) :
QObject(parent), _source(s), _target(t)
{
- _data = new GraphElementData();
+ _data = new GraphElementData(this);
_edgeNode = 0;
_dirty = true;
@@ -47,12 +47,6 @@ Edge::Edge(Node *s, Node *t, QObject *parent) :
updateControls();
}
-Edge::~Edge()
-{
- delete _data;
- delete _edgeNode;
-}
-
/*!
* @brief Edge::copy makes a deep copy of an edge.
* @param nodeTable is an optional pointer to a table mapping the old source/target
@@ -103,8 +97,9 @@ GraphElementData *Edge::data() const
void Edge::setData(GraphElementData *data)
{
- delete _data;
+ GraphElementData *oldData = _data;
_data = data;
+ oldData->deleteLater();
setAttributesFromData();
}
@@ -148,8 +143,9 @@ Node *Edge::edgeNode() const
void Edge::setEdgeNode(Node *edgeNode)
{
- if (_edgeNode != 0) delete _edgeNode;
+ Node *oldEdgeNode = _edgeNode;
_edgeNode = edgeNode;
+ if (oldEdgeNode != 0) oldEdgeNode->deleteLater();
}
bool Edge::hasEdgeNode()