diff --git a/agui2/src/Graphics/Connection/Connection.cpp b/agui2/src/Graphics/Connection/Connection.cpp index 426357230d3f67b362b88b2232c0a341d90231fe..31ad08447cc0db32588c4a5a8e0671d341cacfbe 100644 --- a/agui2/src/Graphics/Connection/Connection.cpp +++ b/agui2/src/Graphics/Connection/Connection.cpp @@ -26,6 +26,9 @@ Connection::Connection(OutputConnectionBox* origin, InputConnectionBox* target) originModel->addOutput(targetModel, target->getSlot()); targetModel->setInput(target->getSlot(), originModel); + + origin->addConnection(this); + target->setConnection(this); } QRectF Connection::boundingRect() const { @@ -101,6 +104,12 @@ void Connection::recalculateBoundingRect(const QPointF& a, const QPointF& b) { } void Connection::destroy() { + auto* originModel = originConnectionBox->getParent()->getModelBox(); + auto* targetModel = targetConnectionBox->getParent()->getModelBox(); + + originModel->removeOutput(targetModel, targetConnectionBox->getSlot()); + targetModel->setInput(targetConnectionBox->getSlot(), nullptr); + auto removed = this->originConnectionBox->connections.erase(this); Q_ASSERT(removed > 0); diff --git a/agui2/src/Graphics/Connection/ConnectionBox.cpp b/agui2/src/Graphics/Connection/ConnectionBox.cpp index 97b48b0085859da760a7e0c534c8f3163f07c8ed..3d1926813370c6aeb55978f7af068c612ba9be53 100644 --- a/agui2/src/Graphics/Connection/ConnectionBox.cpp +++ b/agui2/src/Graphics/Connection/ConnectionBox.cpp @@ -79,9 +79,7 @@ void ConnectionBox::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) { auto* origin = dynamic_cast<OutputConnectionBox*>(a); auto* target = dynamic_cast<InputConnectionBox*>(b); - auto connection = new Connection(origin, target); - origin->addConnection(connection); - target->setConnection(connection); + new Connection(origin, target); } } diff --git a/agui2/src/MainWindow.cpp b/agui2/src/MainWindow.cpp index 34c6ae213ecb45bb04d0a6b4ce774d16f3369f8f..70805df34d02204e3a3a9c30c7257cb8389bb9d2 100644 --- a/agui2/src/MainWindow.cpp +++ b/agui2/src/MainWindow.cpp @@ -201,9 +201,7 @@ void MainWindow::on_actionOpen_triggered() { auto* toConnectionBox = toConnectionBoxes[slot]; - auto* connection = new Connection(fromConnectionBox, toConnectionBox); - fromConnectionBox->addConnection(connection); - toConnectionBox->setConnection(connection); + new Connection(fromConnectionBox, toConnectionBox); } } catch (const std::exception& e) {