Tag browser: only start a possible drag if the item is draggable. This prevents latching onto a different item before the mouse moves "far enough".

This commit is contained in:
Charles Haley 2021-06-09 14:18:55 +01:00
parent 767b9796e0
commit 3499f03ae5

View File

@ -384,7 +384,12 @@ class TagsView(QTreeView): # {{{
def mousePressEvent(self, event):
if event.buttons() & Qt.MouseButton.LeftButton:
self.possible_drag_start = event.pos()
# Only remember a possible drag start if the item is drag enabled
dex = self.indexAt(event.pos())
if self._model.flags(dex) & Qt.ItemFlag.ItemIsDragEnabled:
self.possible_drag_start = event.pos()
else:
self.possible_drag_start = None
return QTreeView.mousePressEvent(self, event)
def mouseMoveEvent(self, event):
@ -399,7 +404,8 @@ class TagsView(QTreeView): # {{{
QTreeView.mouseMoveEvent(self, event)
return
# don't start drag/drop until the mouse has moved a bit.
if ((event.pos() - self.possible_drag_start).manhattanLength() <
if (self.possible_drag_start is None or
(event.pos() - self.possible_drag_start).manhattanLength() <
QApplication.startDragDistance()):
QTreeView.mouseMoveEvent(self, event)
return