|
2 | 2 |
|
3 | 3 | #include "BasicGraphicsScene.hpp" |
4 | 4 | #include "ConnectionGraphicsObject.hpp" |
| 5 | +#include "DataFlowGraphModel.hpp" |
| 6 | +#include "NodeDelegateModel.hpp" |
5 | 7 | #include "NodeGraphicsObject.hpp" |
6 | 8 | #include "StyleCollection.hpp" |
7 | 9 | #include "UndoCommands.hpp" |
|
23 | 25 | #include <cmath> |
24 | 26 |
|
25 | 27 | using QtNodes::BasicGraphicsScene; |
| 28 | +using QtNodes::DataFlowGraphModel; |
26 | 29 | using QtNodes::GraphicsView; |
| 30 | +using QtNodes::NodeDelegateModel; |
| 31 | +using QtNodes::NodeGraphicsObject; |
27 | 32 |
|
28 | 33 | GraphicsView::GraphicsView(QWidget *parent) |
29 | 34 | : QGraphicsView(parent) |
@@ -167,11 +172,21 @@ void GraphicsView::centerScene() |
167 | 172 | void GraphicsView::contextMenuEvent(QContextMenuEvent *event) |
168 | 173 | { |
169 | 174 | QGraphicsView::contextMenuEvent(event); |
170 | | - QMenu *menu; |
| 175 | + QMenu *menu = nullptr; |
171 | 176 |
|
172 | | - if (itemAt(event->pos())) { |
| 177 | + bool isFrozenMenu; |
| 178 | + |
| 179 | + if (auto *dfModel = dynamic_cast<DataFlowGraphModel *>(&nodeScene()->graphModel())) { |
| 180 | + if (auto n = qgraphicsitem_cast<NodeGraphicsObject *>(itemAt(event->pos()))) { |
| 181 | + if (auto *delegate = dfModel->delegateModel<NodeDelegateModel>(n->nodeId())) { |
| 182 | + isFrozenMenu = delegate->frozenMenu(); |
| 183 | + } |
| 184 | + } |
| 185 | + } |
| 186 | + |
| 187 | + if (itemAt(event->pos()) && isFrozenMenu) { |
173 | 188 | menu = nodeScene()->createFreezeMenu(); |
174 | | - } else { |
| 189 | + } else if (!itemAt(event->pos())) { |
175 | 190 | menu = nodeScene()->createSceneMenu(mapToScene(event->pos())); |
176 | 191 | } |
177 | 192 |
|
|
0 commit comments