mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-13 20:23:04 +02:00
Fix segfault.
Fix bug 249. https://qelectrotech.org/bugtracker/view.php?id=249
This commit is contained in:
parent
242c53e3be
commit
67637acaab
@ -1219,13 +1219,20 @@ QList<QAction *> DiagramView::contextMenuActions() const
|
|||||||
*/
|
*/
|
||||||
void DiagramView::contextMenuEvent(QContextMenuEvent *e)
|
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()) {
|
if (!qgi->isSelected()) {
|
||||||
m_diagram->clearSelection();
|
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())
|
if (m_diagram->selectedItems().isEmpty())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user