Skip to content

Commit 65f98d0

Browse files
committed
Fix issue with objects removing
1 parent 494bfae commit 65f98d0

File tree

3 files changed

+32
-28
lines changed

3 files changed

+32
-28
lines changed

src/FlowScene.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,9 +172,8 @@ restoreNode(Properties const &p)
172172

173173
void
174174
FlowScene::
175-
removeNode(NodeGraphicsObject* ngo)
175+
removeNode(std::shared_ptr<Node> node)
176176
{
177-
std::shared_ptr<Node> const node = ngo->node().lock();
178177
nodeDeleted(*node);
179178

180179
auto deleteConnections = [&node, this] (PortType portType)
@@ -198,9 +197,8 @@ removeNode(NodeGraphicsObject* ngo)
198197

199198
void
200199
FlowScene::
201-
removeConnection(ConnectionGraphicsObject* cgo)
200+
removeConnection(std::shared_ptr<Connection> conn)
202201
{
203-
std::shared_ptr<Connection> const conn = cgo->connection().lock();
204202
connectionDeleted(*conn);
205203

206204
deleteConnection(conn);

src/FlowScene.hpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ class NODE_EDITOR_PUBLIC FlowScene
3636
createConnection(PortType connectedPort,
3737
std::shared_ptr<Node> node,
3838
PortIndex portIndex);
39-
39+
4040
std::shared_ptr<Connection>
4141
createConnection(std::shared_ptr<Node> nodeIn,
4242
PortIndex portIndexIn,
4343
std::shared_ptr<Node> nodeOut,
4444
PortIndex portIndexOut);
45-
45+
4646
std::shared_ptr<Connection>
4747
restoreConnection(Properties const &p);
4848

@@ -56,10 +56,10 @@ class NODE_EDITOR_PUBLIC FlowScene
5656
restoreNode(Properties const &p);
5757

5858
void
59-
removeNode(NodeGraphicsObject* item);
59+
removeNode(std::shared_ptr<Node> node);
6060

6161
void
62-
removeConnection(ConnectionGraphicsObject* item);
62+
removeConnection(std::shared_ptr<Connection> connection);
6363

6464
DataModelRegistry&
6565
registry();
@@ -76,12 +76,16 @@ class NODE_EDITOR_PUBLIC FlowScene
7676
load();
7777

7878
signals:
79-
void nodeCreated(Node& n);
80-
void nodeDeleted(Node& n);
81-
82-
void connectionCreated(Connection& c);
83-
void connectionDeleted(Connection& c);
84-
79+
void
80+
nodeCreated(Node& n);
81+
void
82+
nodeDeleted(Node& n);
83+
84+
void
85+
connectionCreated(Connection& c);
86+
void
87+
connectionDeleted(Connection& c);
88+
8589
private:
8690

8791
using SharedConnection = std::shared_ptr<Connection>;

src/FlowView.cpp

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525

2626
#include "StyleCollection.hpp"
2727

28-
2928
FlowView::
3029
FlowView(FlowScene *scene)
3130
: QGraphicsView(scene)
@@ -146,15 +145,27 @@ keyPressEvent(QKeyEvent *event)
146145
break;
147146

148147
case Qt::Key_Delete:
148+
{
149+
std::vector<std::shared_ptr<Node>> nodesToDelete;
150+
std::vector<std::shared_ptr<Connection>> connectionsToDelete;
149151
for (QGraphicsItem * item : _scene->selectedItems())
150152
{
151153
if (auto n = dynamic_cast<NodeGraphicsObject*>(item))
152-
_scene->removeNode(n);
153-
else if (auto n = dynamic_cast<ConnectionGraphicsObject*>(item))
154-
_scene->removeConnection(n);
154+
nodesToDelete.push_back(n->node().lock());
155+
156+
if (auto c = dynamic_cast<ConnectionGraphicsObject*>(item))
157+
connectionsToDelete.push_back(c->connection().lock());
155158
}
156159

157-
break;
160+
for( auto & n : nodesToDelete )
161+
_scene->removeNode(n);
162+
163+
for( auto & c : connectionsToDelete )
164+
_scene->removeConnection(c);
165+
166+
}
167+
168+
break;
158169

159170
case Qt::Key_Shift:
160171
setDragMode(QGraphicsView::RubberBandDrag);
@@ -260,12 +271,3 @@ mouseMoveEvent(QMouseEvent* event)
260271
{
261272
QGraphicsView::mouseMoveEvent(event);
262273
}
263-
264-
265-
//void
266-
//FlowView::
267-
//setStyle(FlowViewStyle ns)
268-
//{
269-
//flowViewStyle = ns;
270-
//setBackgroundBrush(flowViewStyle.BackgroundColor);
271-
//}

0 commit comments

Comments
 (0)