diff --git a/Userland/Libraries/LibGUI/FilteringProxyModel.cpp b/Userland/Libraries/LibGUI/FilteringProxyModel.cpp index 8c80f7318fc..bb243b572c2 100644 --- a/Userland/Libraries/LibGUI/FilteringProxyModel.cpp +++ b/Userland/Libraries/LibGUI/FilteringProxyModel.cpp @@ -30,7 +30,7 @@ int FilteringProxyModel::column_count(ModelIndex const& index) const if ((size_t)index.row() > m_matching_indices.size() || index.row() < 0) return 0; - return m_model.column_count(m_matching_indices[index.row()]); + return m_model->column_count(m_matching_indices[index.row()]); } Variant FilteringProxyModel::data(ModelIndex const& index, ModelRole role) const @@ -55,12 +55,12 @@ void FilteringProxyModel::filter() m_matching_indices.clear(); Function add_matching = [&](ModelIndex& parent_index) { - for (auto i = 0; i < m_model.row_count(parent_index); ++i) { - auto index = m_model.index(i, 0, parent_index); + for (auto i = 0; i < m_model->row_count(parent_index); ++i) { + auto index = m_model->index(i, 0, parent_index); if (!index.is_valid()) continue; - auto filter_matches = m_model.data_matches(index, m_filter_term); + auto filter_matches = m_model->data_matches(index, m_filter_term); bool matches = filter_matches == TriState::True; if (filter_matches == TriState::Unknown) { auto data = index.data(); @@ -100,12 +100,12 @@ ModelIndex FilteringProxyModel::map(ModelIndex const& index) const bool FilteringProxyModel::is_searchable() const { - return m_model.is_searchable(); + return m_model->is_searchable(); } Vector FilteringProxyModel::matches(StringView searching, unsigned flags, ModelIndex const& index) { - auto found_indices = m_model.matches(searching, flags, index); + auto found_indices = m_model->matches(searching, flags, index); for (size_t i = 0; i < found_indices.size(); i++) found_indices[i] = map(found_indices[i]); return found_indices; diff --git a/Userland/Libraries/LibGUI/FilteringProxyModel.h b/Userland/Libraries/LibGUI/FilteringProxyModel.h index 45801550d88..8f344758342 100644 --- a/Userland/Libraries/LibGUI/FilteringProxyModel.h +++ b/Userland/Libraries/LibGUI/FilteringProxyModel.h @@ -17,14 +17,14 @@ namespace GUI { class FilteringProxyModel final : public Model , public ModelClient { public: - static ErrorOr> create(Model& model) + static ErrorOr> create(NonnullRefPtr model) { - return adopt_nonnull_ref_or_enomem(new (nothrow) FilteringProxyModel(model)); + return adopt_nonnull_ref_or_enomem(new (nothrow) FilteringProxyModel(move(model))); } virtual ~FilteringProxyModel() override { - m_model.unregister_client(*this); + m_model->unregister_client(*this); }; virtual int row_count(ModelIndex const& = ModelIndex()) const override; @@ -44,13 +44,13 @@ protected: private: void filter(); - explicit FilteringProxyModel(Model& model) - : m_model(model) + explicit FilteringProxyModel(NonnullRefPtr model) + : m_model(move(model)) { - m_model.register_client(*this); + m_model->register_client(*this); } - Model& m_model; + NonnullRefPtr m_model; // Maps row to actual model index. Vector m_matching_indices;