From 3499f03ae521adf9f01b1568a7a4a528a92cc24e Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Wed, 9 Jun 2021 14:18:55 +0100 Subject: [PATCH] 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". --- src/calibre/gui2/tag_browser/view.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/tag_browser/view.py b/src/calibre/gui2/tag_browser/view.py index 715adae45f..3c3e660477 100644 --- a/src/calibre/gui2/tag_browser/view.py +++ b/src/calibre/gui2/tag_browser/view.py @@ -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