diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-11-25 19:00:38 +0100 |
---|---|---|
committer | bstoeger <32835590+bstoeger@users.noreply.github.com> | 2019-12-04 13:00:23 +0100 |
commit | 755f185cfcbd3d61457df6fdff32bcf2118f0ab5 (patch) | |
tree | c596b7b00b830a8fed11b661fd4d9de3582337b4 /desktop-widgets/divelistview.cpp | |
parent | 86f384f932ae04ab17dabadda81d845069f963d7 (diff) | |
download | subsurface-755f185cfcbd3d61457df6fdff32bcf2118f0ab5.tar.gz |
Selection: move selection of "first" dive to core
The DiveListView has a function to select the first dive. Move
this to the core to be able to call it from all parts (not only
desktop) of the code.
Currently, this has a (small?) UI regression: when filtering dives
and no selected dive is visible anymore, the old code would select
the first dive in the list. The new code selects the newest dive,
which might not be the first if some sort-criterion is active.
To revert to the old behavior, it will be necessary to move the
sorting function likewise to the core.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/divelistview.cpp')
-rw-r--r-- | desktop-widgets/divelistview.cpp | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/desktop-widgets/divelistview.cpp b/desktop-widgets/divelistview.cpp index 05cd6fe72..4354fdb26 100644 --- a/desktop-widgets/divelistview.cpp +++ b/desktop-widgets/divelistview.cpp @@ -474,28 +474,6 @@ void DiveListView::selectDives(const QList<int> &newDiveSelection) selectionChangeDone(); } -// Get index of first dive. This assumes that trips without dives are never shown. -// May return an invalid index if no dive is found. -QModelIndex DiveListView::indexOfFirstDive() -{ - // Fetch the first top-level item. If this is a trip, it is supposed to have at least - // one child. In that case return the child. Otherwise return the top-level item, which - // should be a dive. - QAbstractItemModel *m = model(); - QModelIndex firstDiveOrTrip = m->index(0, 0); - if (!firstDiveOrTrip.isValid()) - return QModelIndex(); - QModelIndex child = m->index(0, 0, firstDiveOrTrip); - return child.isValid() ? child : firstDiveOrTrip; -} - -void DiveListView::selectFirstDive() -{ - QModelIndex first = indexOfFirstDive(); - if (first.isValid()) - setCurrentIndex(first); -} - bool DiveListView::eventFilter(QObject *, QEvent *event) { if (event->type() != QEvent::KeyPress) @@ -544,7 +522,7 @@ void DiveListView::reload() if (amount_selected && current_dive != NULL) selectDive(get_divenr(current_dive), true); else - selectFirstDive(); + select_newest_visible_dive(); if (selectedIndexes().count()) { QModelIndex curr = selectedIndexes().first(); curr = curr.parent().isValid() ? curr.parent() : curr; @@ -1114,7 +1092,7 @@ void DiveListView::filterFinished() // If there are no more selected dives, select the first visible dive if (!selectionModel()->hasSelection()) - selectFirstDive(); + select_newest_visible_dive(); emit divesSelected(); } |