diff options
author | Anne Jan Brouwer <brouwer@annejan.com> | 2016-11-22 09:23:48 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-22 09:23:48 +0100 |
commit | be3ab3353c4ddff66045e404cd452157344c6a7a (patch) | |
tree | 6452e983d81a68a3eca4650bc23d3336e6836c10 | |
parent | ef980b69eae13036d54170247b5d11f6401436bb (diff) | |
parent | 8caf473aa82317abd360eae0b0abc26788107750 (diff) |
Merge pull request #230 from jounathaen/master
Solve Doubleclick issue
-rw-r--r-- | deselectabletreeview.h | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/deselectabletreeview.h b/deselectabletreeview.h index 0c2ede2d..d64f1526 100644 --- a/deselectabletreeview.h +++ b/deselectabletreeview.h @@ -4,6 +4,7 @@ #include "QMouseEvent" #include "QTreeView" #include "mainwindow.h" +#include <QTime> /** * @brief The DeselectableTreeView class @@ -31,22 +32,41 @@ signals: void emptyClicked(); private: + bool DoubleClickHappened; + /** - * @brief mousePressEvent now deselects on second click + * @brief mouseReleaseEvent now deselects on click on empty space * @param event */ - virtual void mousePressEvent(QMouseEvent *event) { - QModelIndex item = indexAt(event->pos()); - bool selected = selectionModel()->isSelected(indexAt(event->pos())); - QTreeView::mousePressEvent(event); - if ((item.row() == -1 && item.column() == -1) || selected) { - clearSelection(); - const QModelIndex index; - selectionModel()->setCurrentIndex(index, QItemSelectionModel::Select); - emit emptyClicked(); - // QTreeView::mousePressEvent(event); + void mouseReleaseEvent(QMouseEvent *event) { + DoubleClickHappened = false; + // The timer is to distinguish between single and double click + QTime dieTime= QTime::currentTime().addMSecs(200); + while (QTime::currentTime() < dieTime) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); + if (!DoubleClickHappened){ + QModelIndex item = indexAt(event->pos()); + bool selected = selectionModel()->isSelected(indexAt(event->pos())); + QTreeView::mouseReleaseEvent(event); + if ((item.row() == -1 && item.column() == -1) || selected) { + clearSelection(); + const QModelIndex index; + selectionModel()->setCurrentIndex(index, QItemSelectionModel::Select); + emit emptyClicked(); + } } } + + + /** + * @brief mouseDoubleClickEvent + * @param event + */ + void mouseDoubleClickEvent(QMouseEvent *event){ + DoubleClickHappened = true; + QTreeView::mouseDoubleClickEvent(event); + } + }; #endif // DESELECTABLETREEVIEW_H |