From 6d75ad09624c789b35e08c252aca40ba89caa252 Mon Sep 17 00:00:00 2001 From: Mikaƫl Capelle Date: Mon, 28 Dec 2020 18:31:07 +0100 Subject: Allow drag&drop a separator to itself. --- src/modlistview.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'src/modlistview.cpp') diff --git a/src/modlistview.cpp b/src/modlistview.cpp index 65e35a8b..0c74c54e 100644 --- a/src/modlistview.cpp +++ b/src/modlistview.cpp @@ -18,6 +18,11 @@ void ModListView::setModel(QAbstractItemModel *model) setVerticalScrollBar(new ViewMarkingScrollBar(model, this)); } +QModelIndexList ModListView::selectedIndexes() const +{ + return m_inDragMoveEvent ? QModelIndexList() : QTreeView::selectedIndexes(); +} + void ModListView::dragEnterEvent(QDragEnterEvent* event) { emit dragEntered(event->mimeData()); @@ -27,23 +32,32 @@ void ModListView::dragEnterEvent(QDragEnterEvent* event) void ModListView::dragMoveEvent(QDragMoveEvent* event) { if (autoExpandDelay() >= 0) { - openTimer.start(autoExpandDelay(), this); + m_openTimer.start(autoExpandDelay(), this); } // bypass QTreeView + m_inDragMoveEvent = true; QAbstractItemView::dragMoveEvent(event); + m_inDragMoveEvent = false; +} + +void ModListView::dropEvent(QDropEvent* event) +{ + m_inDragMoveEvent = true; + QTreeView::dropEvent(event); + m_inDragMoveEvent = false; } void ModListView::timerEvent(QTimerEvent* event) { - if (event->timerId() == openTimer.timerId()) { + 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); } - openTimer.stop(); + m_openTimer.stop(); } else { QTreeView::timerEvent(event); -- cgit v1.3.1