Skip to content

Commit 280406a

Browse files
authored
BUGFIX: GraphicsView::setScene(nullptr) (#495)
* BUGFIX: GraphicsView::setScene(nullptr) * Make revisions based on the review results.
1 parent 829b184 commit 280406a

1 file changed

Lines changed: 28 additions & 1 deletion

File tree

src/GraphicsView.cpp

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,21 @@ QAction *GraphicsView::deleteSelectionAction() const
7575
void GraphicsView::setScene(BasicGraphicsScene *scene)
7676
{
7777
QGraphicsView::setScene(scene);
78+
if (!scene)
79+
{
80+
// Clear actions.
81+
delete _clearSelectionAction;
82+
delete _deleteSelectionAction;
83+
delete _duplicateSelectionAction;
84+
delete _copySelectionAction;
85+
delete _pasteAction;
86+
_clearSelectionAction = nullptr;
87+
_deleteSelectionAction = nullptr;
88+
_duplicateSelectionAction = nullptr;
89+
_copySelectionAction = nullptr;
90+
_pasteAction = nullptr;
91+
return;
92+
}
7893

7994
{
8095
// setup actions
@@ -171,6 +186,8 @@ void GraphicsView::contextMenuEvent(QContextMenuEvent *event)
171186
return;
172187
}
173188

189+
if (!nodeScene()) return;
190+
174191
auto const scenePos = mapToScene(event->pos());
175192

176193
QMenu *menu = nodeScene()->createSceneMenu(scenePos);
@@ -274,12 +291,15 @@ void GraphicsView::setupScale(double scale)
274291

275292
void GraphicsView::onDeleteSelectedObjects()
276293
{
294+
if (!nodeScene()) return;
295+
277296
nodeScene()->undoStack().push(new DeleteCommand(nodeScene()));
278297
}
279298

280299
void GraphicsView::onDuplicateSelectedObjects()
281300
{
282-
qDebug() << "ON DUPLICATE";
301+
if (!nodeScene()) return;
302+
283303
QPointF const pastePosition = scenePastePosition();
284304

285305
nodeScene()->undoStack().push(new CopyCommand(nodeScene()));
@@ -288,11 +308,15 @@ void GraphicsView::onDuplicateSelectedObjects()
288308

289309
void GraphicsView::onCopySelectedObjects()
290310
{
311+
if (!nodeScene()) return;
312+
291313
nodeScene()->undoStack().push(new CopyCommand(nodeScene()));
292314
}
293315

294316
void GraphicsView::onPasteObjects()
295317
{
318+
if (!nodeScene()) return;
319+
296320
QPointF const pastePosition = scenePastePosition();
297321
nodeScene()->undoStack().push(new PasteCommand(nodeScene(), pastePosition));
298322
}
@@ -335,6 +359,9 @@ void GraphicsView::mousePressEvent(QMouseEvent *event)
335359
void GraphicsView::mouseMoveEvent(QMouseEvent *event)
336360
{
337361
QGraphicsView::mouseMoveEvent(event);
362+
363+
if (!scene()) return;
364+
338365
if (scene()->mouseGrabberItem() == nullptr && event->buttons() == Qt::LeftButton) {
339366
// Make sure shift is not being pressed
340367
if ((event->modifiers() & Qt::ShiftModifier) == 0) {

0 commit comments

Comments
 (0)