From dedb5ae075cb29e1153c014d7af3c1e38f66402e Mon Sep 17 00:00:00 2001 From: Jonathan Klimt Date: Mon, 21 Nov 2016 21:36:53 +0100 Subject: Fixed doubleclick on treeview --- deselectabletreeview.h | 42 +++++++++++++++++++++++++++++++----------- 1 file 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 /** * @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 -- cgit v1.2.3