diff options
Diffstat (limited to 'qt-ui/divelistview.cpp')
-rw-r--r-- | qt-ui/divelistview.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index 2b579e1f0..e5d4baddc 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -17,7 +17,6 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec { setUniformRowHeights(true); setItemDelegateForColumn(TreeItemDT::RATING, new StarWidgetsDelegate()); - } void DiveListView::setModel(QAbstractItemModel* model) @@ -43,8 +42,22 @@ void DiveListView::mouseReleaseEvent(QMouseEvent* event) QTreeView::mouseReleaseEvent(event); } +void DiveListView::keyPressEvent(QKeyEvent* event) +{ + if(event->modifiers()) + mouseClickSelection = true; + QTreeView::keyPressEvent(event); +} + +void DiveListView::keyReleaseEvent(QKeyEvent* event) +{ + mouseClickSelection = false; + QWidget::keyReleaseEvent(event); +} + void DiveListView::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) { + QList<QModelIndex> parents; Q_FOREACH(const QModelIndex& index, deselected.indexes()) { const QAbstractItemModel *model = index.model(); struct dive *dive = (struct dive*) model->data(index, TreeItemDT::DIVE_ROLE).value<void*>(); @@ -53,10 +66,11 @@ void DiveListView::selectionChanged(const QItemSelection& selected, const QItemS expand(index); // leave this - even if it looks like it shouldn't be here. looks like I'v found a Qt bug. // the subselection is removed, but the painting is not. this cleans the area. } + } else if (!parents.contains(index.parent())) { + parents.push_back(index.parent()); } } - QList<QModelIndex> parents; Q_FOREACH(const QModelIndex& index, selected.indexes()) { const QAbstractItemModel *model = index.model(); struct dive *dive = (struct dive*) model->data(index, TreeItemDT::DIVE_ROLE).value<void*>(); @@ -66,17 +80,17 @@ void DiveListView::selectionChanged(const QItemSelection& selected, const QItemS selection.select(index.child(0,0), index.child(model->rowCount(index) -1 , 0)); selectionModel()->select(selection, QItemSelectionModel::Select | QItemSelectionModel::Rows); selectionModel()->setCurrentIndex(index, QItemSelectionModel::Select | QItemSelectionModel::NoUpdate); - if (!isExpanded(index)){ + if (!isExpanded(index)) { expand(index); } } - } - else if (!parents.contains(index.parent())){ + } else if (!parents.contains(index.parent())) { parents.push_back(index.parent()); } } - Q_FOREACH(const QModelIndex& index, parents){ + Q_FOREACH(const QModelIndex& index, parents) { + qDebug() << "Expanding"; expand(index); } } |