summaryrefslogtreecommitdiffstats
path: root/desktop-widgets
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-02-28 22:11:12 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-03-01 10:23:53 -0800
commit2b3dc019db066b7c9f31cc66b96c70379c0970cd (patch)
tree59c3413c67ddfc1a6f34ddb27fe5416a92ed018a /desktop-widgets
parentd6114fc37e922c51341ea71cbcc58543d12f7a49 (diff)
downloadsubsurface-2b3dc019db066b7c9f31cc66b96c70379c0970cd.tar.gz
selection: update selection on key-presses
Commit 2cea115ddb7528d9e6dd1bf918ebf5c670b82479 "fixed" the selection by hooking into mouseRelease events. An unintended consequence was that scrolling with the cursor keys didn't update the current dive. Therefore, also hook into the corresponding key-press events. This is just horrible, but I'm not aware of any possibility to fix it properly. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets')
-rw-r--r--desktop-widgets/divelistview.cpp13
-rw-r--r--desktop-widgets/divelistview.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/desktop-widgets/divelistview.cpp b/desktop-widgets/divelistview.cpp
index 4af42e713..29dabfa36 100644
--- a/desktop-widgets/divelistview.cpp
+++ b/desktop-widgets/divelistview.cpp
@@ -554,6 +554,19 @@ void DiveListView::mouseReleaseEvent(QMouseEvent *event)
selectionChangeDone();
}
+void DiveListView::keyPressEvent(QKeyEvent *event)
+{
+ // Hook into cursor-up and cursor-down events and update selection if necessary.
+ // See comment in mouseReleaseEvent()
+ if (event->key() != Qt::Key_Down && event->key() != Qt::Key_Up)
+ return QTreeView::keyPressEvent(event);
+ QModelIndexList selectionBefore = selectionModel()->selectedRows();
+ QTreeView::keyPressEvent(event);
+ QModelIndexList selectionAfter = selectionModel()->selectedRows();
+ if (selectionBefore != selectionAfter)
+ selectionChangeDone();
+}
+
void DiveListView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags)
{
// We hook into QTreeView's setSelection() to update the UI
diff --git a/desktop-widgets/divelistview.h b/desktop-widgets/divelistview.h
index 20f568479..b31d8039e 100644
--- a/desktop-widgets/divelistview.h
+++ b/desktop-widgets/divelistview.h
@@ -66,6 +66,7 @@ slots:
private:
void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) override;
void mouseReleaseEvent(QMouseEvent *event) override;
+ void keyPressEvent(QKeyEvent *event) override;
void selectAll() override;
void selectionChangeDone();
DiveTripModelBase::Layout currentLayout;