mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 21:03:23 +00:00
shift-key + shift-click + key corner cases covered.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
6f74618d9c
commit
009e6a6fa7
3 changed files with 23 additions and 7 deletions
|
@ -5,7 +5,7 @@ all:
|
|||
PKGCONFIG=pkg-config
|
||||
XML2CONFIG=xml2-config
|
||||
XSLCONFIG=xslt-config
|
||||
QMAKE=qmake
|
||||
QMAKE=qmake-qt4
|
||||
MOC=moc
|
||||
UIC=uic
|
||||
|
||||
|
|
|
@ -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*>();
|
||||
|
@ -70,13 +84,13 @@ void DiveListView::selectionChanged(const QItemSelection& selected, const QItemS
|
|||
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) {
|
||||
qDebug() << "Expanding";
|
||||
expand(index);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,8 @@ public:
|
|||
|
||||
void mousePressEvent(QMouseEvent* event);
|
||||
void mouseReleaseEvent(QMouseEvent* event);
|
||||
void keyPressEvent(QKeyEvent* event);
|
||||
void keyReleaseEvent(QKeyEvent*);
|
||||
|
||||
void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue