Stop multiple selection changed messages being sent when calling DeleteChildren on a TreeItem.
This commit is contained in:
20
src/qt/treectrl.cpp
Normal file → Executable file
20
src/qt/treectrl.cpp
Normal file → Executable 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);
|
||||
|
||||
Reference in New Issue
Block a user