diff --git a/src/ui/elfmodel/sectionproxymodel.h b/src/ui/elfmodel/sectionproxymodel.h --- a/src/ui/elfmodel/sectionproxymodel.h +++ b/src/ui/elfmodel/sectionproxymodel.h @@ -18,10 +18,10 @@ #ifndef SECTIONPROXYMODEL_H #define SECTIONPROXYMODEL_H -#include +#include /** Restrict the structure model to just files and sections. */ -class SectionProxyModel : public KRecursiveFilterProxyModel +class SectionProxyModel : public QSortFilterProxyModel { Q_OBJECT public: diff --git a/src/ui/elfmodel/sectionproxymodel.cpp b/src/ui/elfmodel/sectionproxymodel.cpp --- a/src/ui/elfmodel/sectionproxymodel.cpp +++ b/src/ui/elfmodel/sectionproxymodel.cpp @@ -18,7 +18,7 @@ #include "sectionproxymodel.h" #include "elfmodel.h" -SectionProxyModel::SectionProxyModel(QObject* parent): KRecursiveFilterProxyModel(parent) +SectionProxyModel::SectionProxyModel(QObject* parent): QSortFilterProxyModel(parent) { } @@ -29,7 +29,22 @@ const auto sourceIndex = sourceModel()->index(source_row, 0, source_parent); const auto fileData = sourceModel()->data(sourceIndex, ElfModel::FileRole); const auto secData = sourceModel()->data(sourceIndex, ElfModel::SectionRole); - if (fileData.isNull() && secData.isNull()) + + if (fileData.isNull() && secData.isNull()) { return false; - return KRecursiveFilterProxyModel::filterAcceptsRow(source_row, source_parent); + } else if (QSortFilterProxyModel::filterAcceptsRow(source_row, source_parent)) { + return true; + } + // implement our own recursive filtering, + // code taken from KRecursiveFilterProxyModel::filterAcceptsRow() + bool accepted = false; + + const int numChildren = sourceModel()->rowCount(sourceIndex); + for (int row = 0, rows = numChildren; row < rows; ++row) { + if (filterAcceptsRow(row, sourceIndex)) { + accepted = true; + break; + } + } + return accepted; } diff --git a/src/ui/views/elfstructureview.cpp b/src/ui/views/elfstructureview.cpp --- a/src/ui/views/elfstructureview.cpp +++ b/src/ui/views/elfstructureview.cpp @@ -21,17 +21,18 @@ #include #include -#include +#include #include ElfStructureView::ElfStructureView(QWidget* parent): QWidget(parent), ui(new Ui::ElfStructureView), - m_proxy(new KRecursiveFilterProxyModel(this)) + m_proxy(new QSortFilterProxyModel(this)) { ui->setupUi(this); ui->elfStructureView->setModel(m_proxy); + m_proxy->setRecursiveFilteringEnabled(true); ui->elfStructureView->header()->setSectionResizeMode(QHeaderView::ResizeToContents); connect(ui->elfStructureView->selectionModel(), &QItemSelectionModel::selectionChanged, diff --git a/src/ui/views/typeview.cpp b/src/ui/views/typeview.cpp --- a/src/ui/views/typeview.cpp +++ b/src/ui/views/typeview.cpp @@ -21,19 +21,19 @@ #include #include -#include - #include #include +#include TypeView::TypeView(QWidget* parent): QWidget(parent), ui(new Ui::TypeView), m_model(new TypeModel(this)) { ui->setupUi(this); - auto proxy = new KRecursiveFilterProxyModel(this); + auto proxy = new QSortFilterProxyModel(this); + proxy->setRecursiveFilteringEnabled(true); proxy->setSourceModel(m_model); ui->typeTreeView->setModel(proxy); ui->typeTreeView->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);