From 159d04e4c52da7cfd4d9ce193a960365956e5fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Fri, 1 Feb 2019 17:10:05 +0100 Subject: [PATCH] Re-enable Proxy Model for Classes Widget --- src/widgets/ClassesWidget.cpp | 13 ++++++++----- src/widgets/ClassesWidget.h | 3 ++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/widgets/ClassesWidget.cpp b/src/widgets/ClassesWidget.cpp index 9926ee86..de452969 100644 --- a/src/widgets/ClassesWidget.cpp +++ b/src/widgets/ClassesWidget.cpp @@ -463,6 +463,11 @@ bool ClassesSortFilterProxyModel::lessThan(const QModelIndex &left, const QModel } } +bool ClassesSortFilterProxyModel::hasChildren(const QModelIndex &parent) const +{ + return !parent.isValid() || !parent.parent().isValid(); +} + ClassesWidget::ClassesWidget(MainWindow *main, QAction *action) : @@ -474,7 +479,7 @@ ClassesWidget::ClassesWidget(MainWindow *main, QAction *action) : ui->classesTreeView->setIconSize(QSize(10, 10)); proxy_model = new ClassesSortFilterProxyModel(this); - ui->classesTreeView->setModel(nullptr); + ui->classesTreeView->setModel(proxy_model); ui->classesTreeView->sortByColumn(ClassesModel::TYPE, Qt::AscendingOrder); ui->classesTreeView->setContextMenuPolicy(Qt::CustomContextMenu); @@ -511,8 +516,7 @@ void ClassesWidget::refreshClasses() delete anal_model; anal_model = nullptr; bin_model = new BinClassesModel(this); - ui->classesTreeView->setModel(bin_model); - //proxy_model->setSourceModel(bin_model); + proxy_model->setSourceModel(bin_model); } bin_model->setClasses(Core()->getAllClassesFromBin()); break; @@ -522,8 +526,7 @@ void ClassesWidget::refreshClasses() delete bin_model; bin_model = nullptr; anal_model = new AnalClassesModel(this); - ui->classesTreeView->setModel(anal_model); - //proxy_model->setSourceModel(anal_model); + proxy_model->setSourceModel(anal_model); } anal_model->refreshClasses(); break; diff --git a/src/widgets/ClassesWidget.h b/src/widgets/ClassesWidget.h index c721b3a5..cf58ac3e 100644 --- a/src/widgets/ClassesWidget.h +++ b/src/widgets/ClassesWidget.h @@ -22,7 +22,7 @@ class ClassesModel: public QAbstractItemModel { public: enum Columns { NAME = 0, TYPE, OFFSET, VTABLE, COUNT }; - enum class RowType { Class = 0, Method = 1, Field = 2, Base = 3, VTable = 4 }; + enum class RowType { Class = 0, Base, VTable, Method, Field }; static const int OffsetRole = Qt::UserRole; static const int NameRole = Qt::UserRole + 1; @@ -106,6 +106,7 @@ public: protected: bool filterAcceptsRow(int row, const QModelIndex &parent) const override; bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; + bool hasChildren(const QModelIndex &parent = QModelIndex()) const override; };