summaryrefslogtreecommitdiff
path: root/plugins/warp/ui
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-07-20 23:16:25 -0400
committerMason Reed <mason@vector35.com>2025-07-21 12:14:45 -0400
commit4d64a1c56dcac0b89dd9458cace2e69a8fa9162a (patch)
tree2e7333b443a4ce2cc730c9874de9b8e43eb1f0c1 /plugins/warp/ui
parent6ebadb16f3c5664a8d69376383232b79690e50d0 (diff)
[WARP] Fix UI hanging when matched function sidebar updates with >50k matched functions
One day I will get the QT incantations correct
Diffstat (limited to 'plugins/warp/ui')
-rw-r--r--plugins/warp/ui/matched.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/plugins/warp/ui/matched.cpp b/plugins/warp/ui/matched.cpp
index 475e0cdd..618c1b4c 100644
--- a/plugins/warp/ui/matched.cpp
+++ b/plugins/warp/ui/matched.cpp
@@ -70,6 +70,10 @@ void WarpMatchedWidget::Update()
{
m_tableWidget->GetTableView()->setSortingEnabled(false);
m_tableWidget->GetTableView()->setEnabled(false);
+ m_tableWidget->GetProxyModel()->setDynamicSortFilter(false);
+ m_tableWidget->GetTableView()->setUpdatesEnabled(false);
+ m_tableWidget->GetTableView()->setModel(nullptr);
+ m_tableWidget->GetProxyModel()->setSourceModel(nullptr);
for (const auto &analysisFunction: m_current->GetAnalysisFunctionList())
{
if (const auto &matchedFunction = Warp::Function::GetMatched(*analysisFunction))
@@ -78,6 +82,10 @@ void WarpMatchedWidget::Update()
m_tableWidget->InsertFunction(startAddress, new WarpFunctionItem(matchedFunction, analysisFunction));
}
}
+ m_tableWidget->GetTableView()->setModel(m_tableWidget->GetProxyModel());
+ m_tableWidget->GetProxyModel()->setSourceModel(m_tableWidget->GetModel());
+ m_tableWidget->GetProxyModel()->setDynamicSortFilter(true);
m_tableWidget->GetTableView()->setEnabled(true);
m_tableWidget->GetTableView()->setSortingEnabled(true);
+ m_tableWidget->GetTableView()->setUpdatesEnabled(true);
}