From d813bf77ee980d8c9f6b0fbc28ac005915250f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Tue, 5 Apr 2022 00:16:49 +0200 Subject: [PATCH] LibGUI: Associate model index metadata directly with the model index This was using internal_data beforehand, which relies on the internal data to be distinct for different model indices. That's not the case for example for SortingProxyModel. Using the model index directly makes tree expansion work properly when using a tree table widget with a SortingProxyModel. --- Userland/Libraries/LibGUI/TreeView.cpp | 4 ++-- Userland/Libraries/LibGUI/TreeView.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibGUI/TreeView.cpp b/Userland/Libraries/LibGUI/TreeView.cpp index 3363e28e73..87d58ad7d6 100644 --- a/Userland/Libraries/LibGUI/TreeView.cpp +++ b/Userland/Libraries/LibGUI/TreeView.cpp @@ -25,12 +25,12 @@ struct TreeView::MetadataForIndex { TreeView::MetadataForIndex& TreeView::ensure_metadata_for_index(ModelIndex const& index) const { VERIFY(index.is_valid()); - auto it = m_view_metadata.find(index.internal_data()); + auto it = m_view_metadata.find(index); if (it != m_view_metadata.end()) return *it->value; auto new_metadata = make(); auto& new_metadata_ref = *new_metadata; - m_view_metadata.set(index.internal_data(), move(new_metadata)); + m_view_metadata.set(index, move(new_metadata)); return new_metadata_ref; } diff --git a/Userland/Libraries/LibGUI/TreeView.h b/Userland/Libraries/LibGUI/TreeView.h index 75ba2abe5d..3e1543e8a8 100644 --- a/Userland/Libraries/LibGUI/TreeView.h +++ b/Userland/Libraries/LibGUI/TreeView.h @@ -72,7 +72,7 @@ private: MetadataForIndex& ensure_metadata_for_index(ModelIndex const&) const; void set_open_state_of_all_in_subtree(ModelIndex const& root, bool open); - mutable HashMap> m_view_metadata; + mutable HashMap> m_view_metadata; RefPtr m_expand_bitmap; RefPtr m_collapse_bitmap;