Stop multiple selection changed messages being sent when calling DeleteChildren on a TreeItem.

This commit is contained in:
Mick Waites
2019-06-19 14:05:31 +01:00
parent 9bb9bf5718
commit af5b122b2b

20
src/qt/treectrl.cpp Normal file → Executable file
View File

@@ -1067,11 +1067,31 @@ void wxTreeCtrl::Delete(const wxTreeItemId& item)
delete qTreeItem;
}
class wxQtEnsureSignalsBlocked
{
public:
wxQtEnsureSignalsBlocked(QWidget *widget) :
m_widget(widget)
{
m_restore = m_widget->blockSignals(true);
}
~wxQtEnsureSignalsBlocked()
{
m_widget->blockSignals(m_restore);
}
private:
QWidget *m_widget;
bool m_restore;
};
void wxTreeCtrl::DeleteChildren(const wxTreeItemId& item)
{
wxCHECK_RET(item.IsOk(), "invalid tree item");
QTreeWidgetItem *qTreeItem = wxQtConvertTreeItem(item);
wxQtEnsureSignalsBlocked ensureSignalsBlock(m_qtTreeWidget);
while ( qTreeItem->childCount() > 0 )
{
QTreeWidgetItem *child = qTreeItem->child(0);