summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnne Jan Brouwer <brouwer@annejan.com>2016-11-22 09:23:48 +0100
committerGitHub <noreply@github.com>2016-11-22 09:23:48 +0100
commitbe3ab3353c4ddff66045e404cd452157344c6a7a (patch)
tree6452e983d81a68a3eca4650bc23d3336e6836c10
parentef980b69eae13036d54170247b5d11f6401436bb (diff)
parent8caf473aa82317abd360eae0b0abc26788107750 (diff)
Merge pull request #230 from jounathaen/master
Solve Doubleclick issue
-rw-r--r--deselectabletreeview.h42
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