Fix segfault.

Fix bug 249.
https://qelectrotech.org/bugtracker/view.php?id=249
This commit is contained in:
joshua 2021-12-28 15:25:35 +01:00
parent 242c53e3be
commit 67637acaab

View File

@ -1219,13 +1219,20 @@ QList<QAction *> DiagramView::contextMenuActions() const
*/
void DiagramView::contextMenuEvent(QContextMenuEvent *e)
{
if (QGraphicsItem *qgi = m_diagram->itemAt(mapToScene(e->pos()), transform()))
if (auto qgi = m_diagram->itemAt(mapToScene(e->pos()), transform()))
{
if (!qgi->isSelected()) {
m_diagram->clearSelection();
}
qgi->setSelected(true);
// At this step qgi can be deleted for exemple if qgi is a QetGraphicsHandlerItem.
// When we call clearSelection the parent item of the handler
// is deselected and so delete all handlers, in this case,
// qgi become a dangling pointer.
// we need to call again itemAt.
if (auto item_ = m_diagram->itemAt(mapToScene(e->pos()), transform())) {
item_->setSelected(true);
}
}
if (m_diagram->selectedItems().isEmpty())