┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kstandarditemlistwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/kitemviews/kstandarditemlistwidget.cpp')
-rw-r--r--src/kitemviews/kstandarditemlistwidget.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp
index 3dccfcc7d..4d1031943 100644
--- a/src/kitemviews/kstandarditemlistwidget.cpp
+++ b/src/kitemviews/kstandarditemlistwidget.cpp
@@ -610,7 +610,10 @@ void KStandardItemListWidget::editedRoleChanged(const QByteArray& current, const
this, SLOT(slotRoleEditingCanceled(int,QByteArray,QVariant)));
disconnect(m_roleEditor, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)),
this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant)));
- m_roleEditor->deleteLater();
+ // Do not delete the role editor using deleteLater() because we might be
+ // inside a nested event loop which has been started by one of its event
+ // handlers (contextMenuEvent() or drag&drop inside mouseMoveEvent()).
+ m_roleEditor->deleteWhenIdle();
m_roleEditor = 0;
}
return;
@@ -1275,7 +1278,11 @@ void KStandardItemListWidget::closeRoleEditor()
this, SLOT(slotRoleEditingCanceled(int,QByteArray,QVariant)));
disconnect(m_roleEditor, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)),
this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant)));
- m_roleEditor->deleteLater();
+
+ // Do not delete the role editor using deleteLater() because we might be
+ // inside a nested event loop which has been started by one of its event
+ // handlers (contextMenuEvent() or drag&drop inside mouseMoveEvent()).
+ m_roleEditor->deleteWhenIdle();
m_roleEditor = 0;
}