From 1522c8175e77d71d76e9bf11ee7b28c67977c41f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 25 Jan 2017 04:13:17 +0100 Subject: [PATCH] Better model selection, much faster --- src/blackgui/views/viewbase.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/blackgui/views/viewbase.cpp b/src/blackgui/views/viewbase.cpp index 00bae9761..63813e8a1 100644 --- a/src/blackgui/views/viewbase.cpp +++ b/src/blackgui/views/viewbase.cpp @@ -418,15 +418,17 @@ namespace BlackGui void CViewBaseNonTemplate::selectRows(const QSet &rows) { - // Multi row selection only work in MultiSelection + if (!this->selectionModel()) { return; } + + // multiple times faster than multiple than this->selectRow() this->clearSelection(); - const SelectionMode m = this->selectionMode(); - this->setSelectionMode(MultiSelection); + QItemSelection selectedItems; + const int columns = this->model()->columnCount() - 1; for (int r : rows) { - this->selectRow(r); + selectedItems.select(this->model()->index(r, 0), this->model()->index(r, columns)); } - this->setSelectionMode(m); + this->selectionModel()->select(selectedItems, QItemSelectionModel::Select); } int CViewBaseNonTemplate::selectedRowCount() const