summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/divelistview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'desktop-widgets/divelistview.cpp')
-rw-r--r--desktop-widgets/divelistview.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/desktop-widgets/divelistview.cpp b/desktop-widgets/divelistview.cpp
index a4b5ad282..ee0c1c98f 100644
--- a/desktop-widgets/divelistview.cpp
+++ b/desktop-widgets/divelistview.cpp
@@ -135,7 +135,7 @@ void DiveListView::calculateInitialColumnWidth(int col)
void DiveListView::setColumnWidths()
{
QSettings settings;
- backupExpandedRows();
+ std::vector<int> expandedRows = backupExpandedRows();
settings.beginGroup("ListWidget");
/* if no width are set, use the calculated width for each column;
* for that to work we need to temporarily expand all rows */
@@ -150,7 +150,7 @@ void DiveListView::setColumnWidths()
setColumnWidth(i, initialColumnWidths[i]);
}
settings.endGroup();
- restoreExpandedRows();
+ restoreExpandedRows(expandedRows);
setColumnWidth(lastVisibleColumn(), 10);
}
@@ -165,18 +165,19 @@ int DiveListView::lastVisibleColumn()
return lastColumn;
}
-void DiveListView::backupExpandedRows()
+std::vector<int> DiveListView::backupExpandedRows()
{
- expandedRows.clear();
+ std::vector<int> expandedRows;
for (int i = 0; i < model()->rowCount(); i++)
if (isExpanded(model()->index(i, 0)))
expandedRows.push_back(i);
+ return expandedRows;
}
-void DiveListView::restoreExpandedRows()
+void DiveListView::restoreExpandedRows(const std::vector<int> &expandedRows)
{
setAnimated(false);
- Q_FOREACH (const int &i, expandedRows)
+ for (int i: expandedRows)
setExpanded(model()->index(i, 0), true);
setAnimated(true);
}
@@ -437,13 +438,14 @@ void DiveListView::sortIndicatorChanged(int i, Qt::SortOrder order)
sortByColumn(i, order);
} else {
// clear the model, repopulate with new indexes.
- if (currentLayout == DiveTripModelBase::TREE)
- backupExpandedRows();
+ std::vector<int> expandedRows;
+ if(currentLayout == DiveTripModelBase::TREE)
+ expandedRows = backupExpandedRows();
currentLayout = newLayout;
resetModel();
sortByColumn(i, order);
if (newLayout == DiveTripModelBase::TREE)
- restoreExpandedRows();
+ restoreExpandedRows(expandedRows);
}
}