diff --git a/debugger/variable/variablesortmodel.h b/debugger/variable/variablesortmodel.h --- a/debugger/variable/variablesortmodel.h +++ b/debugger/variable/variablesortmodel.h @@ -25,6 +25,7 @@ #include class QModelIndex; +class QCollator; namespace KDevelop { @@ -35,9 +36,12 @@ public: VariableSortProxyModel(QObject *parent = nullptr); + ~VariableSortProxyModel(); protected: bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; +private: + QCollator *m_collator; }; } diff --git a/debugger/variable/variablesortmodel.cpp b/debugger/variable/variablesortmodel.cpp --- a/debugger/variable/variablesortmodel.cpp +++ b/debugger/variable/variablesortmodel.cpp @@ -30,16 +30,21 @@ VariableSortProxyModel::VariableSortProxyModel(QObject *parent) : QSortFilterProxyModel(parent) { + m_collator = new QCollator(); + m_collator->setNumericMode(true); + m_collator->setCaseSensitivity(Qt::CaseInsensitive); +} + +VariableSortProxyModel::~VariableSortProxyModel() +{ + delete m_collator; } bool VariableSortProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const { - QCollator collator; - collator.setNumericMode(true); - collator.setCaseSensitivity(Qt::CaseInsensitive); const QString leftString = sourceModel()->data(left).toString(); const QString rightString = sourceModel()->data(right).toString(); - int result = collator.compare(leftString, rightString); + int result = m_collator->compare(leftString, rightString); return result < 0; }