summaryrefslogtreecommitdiffstats
path: root/Project/Transformer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/Transformer.cpp')
-rw-r--r--Project/Transformer.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp
index 2ba6850..4dfa7f4 100644
--- a/Project/Transformer.cpp
+++ b/Project/Transformer.cpp
@@ -28,6 +28,7 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position)
if(m_parentList.size() == 0) {
m_position = position;
m_parentList.push_back(parent);
+ parent->AddChild(this);
wxPoint2DDouble parentPt =
parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
@@ -43,6 +44,7 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position)
// Second bus.
else if(parent != m_parentList[0]) {
m_parentList.push_back(parent);
+ parent->AddChild(this);
wxPoint2DDouble parentPt =
parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
@@ -220,12 +222,18 @@ void Transformer::MoveNode(Element* parent, wxPoint2DDouble position)
} else {
if(m_activeNodeID == 1) {
m_pointList[0] = m_movePts[0] + position - m_moveStartPt;
- m_parentList[0] = NULL;
- m_online = false;
+ if(m_parentList[0]) {
+ m_parentList[0]->RemoveChild(this);
+ m_parentList[0] = NULL;
+ m_online = false;
+ }
} else if(m_activeNodeID == 2) {
m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;
- m_parentList[1] = NULL;
- m_online = false;
+ if(m_parentList[1]) {
+ m_parentList[1]->RemoveChild(this);
+ m_parentList[1] = NULL;
+ m_online = false;
+ }
}
}