Przeglądaj źródła

LibGUI: Make SortingProxyModel clear view selections aggressively

When invalidating all indexes, tell all attached views to just wipe
their selections. This is the best we can do for now.
Andreas Kling 4 lat temu
rodzic
commit
a66e55ec64
1 zmienionych plików z 8 dodań i 2 usunięć
  1. 8 2
      Libraries/LibGUI/SortingProxyModel.cpp

+ 8 - 2
Libraries/LibGUI/SortingProxyModel.cpp

@@ -44,10 +44,16 @@ SortingProxyModel::~SortingProxyModel()
 
 
 void SortingProxyModel::invalidate(unsigned int flags)
 void SortingProxyModel::invalidate(unsigned int flags)
 {
 {
-    if (flags == UpdateFlag::DontInvalidateIndexes)
+    if (flags == UpdateFlag::DontInvalidateIndexes) {
         sort(m_last_key_column, m_last_sort_order);
         sort(m_last_key_column, m_last_sort_order);
-    else
+    } else {
         m_mappings.clear();
         m_mappings.clear();
+
+        // FIXME: This is really harsh, but without precise invalidation, not much we can do.
+        for_each_view([&](auto& view) {
+            view.selection().clear();
+        });
+    }
     did_update(flags);
     did_update(flags);
 }
 }