From 9b13b467cf74ef7cbdedb6f26e4e611969be4f6d Mon Sep 17 00:00:00 2001 From: Mikaƫl Capelle Date: Tue, 29 Dec 2020 12:23:47 +0100 Subject: Revert "Revert to Qt default behavior for auto-collapse on hovering." This reverts commit b74f08a57ba659e2da232e253844aff8a169f9e0. --- src/modlistview.cpp | 22 +++++++++++++++++++++- src/modlistview.h | 6 ++++++ 2 files changed, 27 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/modlistview.cpp b/src/modlistview.cpp index b1cce82e..70770dc2 100644 --- a/src/modlistview.cpp +++ b/src/modlistview.cpp @@ -31,8 +31,13 @@ void ModListView::dragEnterEvent(QDragEnterEvent* event) void ModListView::dragMoveEvent(QDragMoveEvent* event) { + if (autoExpandDelay() >= 0) { + m_openTimer.start(autoExpandDelay(), this); + } + + // bypass QTreeView m_inDragMoveEvent = true; - QTreeView::dragMoveEvent(event); + QAbstractItemView::dragMoveEvent(event); m_inDragMoveEvent = false; } @@ -45,3 +50,18 @@ void ModListView::dropEvent(QDropEvent* event) m_inDragMoveEvent = false; } +void ModListView::timerEvent(QTimerEvent* event) +{ + if (event->timerId() == m_openTimer.timerId()) { + QPoint pos = viewport()->mapFromGlobal(QCursor::pos()); + if (state() == QAbstractItemView::DraggingState + && viewport()->rect().contains(pos)) { + QModelIndex index = indexAt(pos); + setExpanded(index, true); + } + m_openTimer.stop(); + } + else { + QTreeView::timerEvent(event); + } +} diff --git a/src/modlistview.h b/src/modlistview.h index af608427..0ded8f1d 100644 --- a/src/modlistview.h +++ b/src/modlistview.h @@ -35,6 +35,7 @@ protected: // QModelIndexList selectedIndexes() const; + void timerEvent(QTimerEvent* event) override; void dragEnterEvent(QDragEnterEvent* event) override; void dragMoveEvent(QDragMoveEvent* event) override; void dropEvent(QDropEvent* event) override; @@ -42,8 +43,13 @@ protected: private: ViewMarkingScrollBar* m_scrollbar; + bool m_inDragMoveEvent = false; + // replace the auto-expand timer from QTreeView to avoid + // auto-collapsing + QBasicTimer m_openTimer; + }; #endif // MODLISTVIEW_H -- cgit v1.3.1