@@ -75,6 +75,21 @@ QAction *GraphicsView::deleteSelectionAction() const
7575void 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
275292void GraphicsView::onDeleteSelectedObjects ()
276293{
294+ if (!nodeScene ()) return ;
295+
277296 nodeScene ()->undoStack ().push (new DeleteCommand (nodeScene ()));
278297}
279298
280299void 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
289309void GraphicsView::onCopySelectedObjects ()
290310{
311+ if (!nodeScene ()) return ;
312+
291313 nodeScene ()->undoStack ().push (new CopyCommand (nodeScene ()));
292314}
293315
294316void 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)
335359void 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