From ffc372e0c073bba7f94f15b6de0c99748c9aeef5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 4 Oct 2014 20:46:55 +0530 Subject: [PATCH] Tag Browser: Use correct image for drag and drop even when item is showing the plus or minus icons --- src/calibre/gui2/tag_browser/model.py | 5 +++++ src/calibre/gui2/tag_browser/view.py | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/tag_browser/model.py b/src/calibre/gui2/tag_browser/model.py index 687458916b..6f73c3daf3 100644 --- a/src/calibre/gui2/tag_browser/model.py +++ b/src/calibre/gui2/tag_browser/model.py @@ -24,6 +24,7 @@ from calibre.utils.formatter import EvalFormatter TAG_SEARCH_STATES = {'clear': 0, 'mark_plus': 1, 'mark_plusplus': 2, 'mark_minus': 3, 'mark_minusminus': 4} +DRAG_IMAGE_ROLE = Qt.UserRole + 1000 _bf = None def bf(): @@ -116,6 +117,8 @@ class TagTreeItem(object): # {{{ return bf() if role == Qt.ToolTipRole and self.tooltip is not None: return (self.tooltip) + if role == DRAG_IMAGE_ROLE: + return self.icon return None def tag_data(self, role): @@ -153,6 +156,8 @@ class TagTreeItem(object): # {{{ return (self.tooltip + tag.tooltip) else: return (self.tooltip) + if role == DRAG_IMAGE_ROLE: + return self.icon_state_map[0] return None def toggle(self, set_to=None): diff --git a/src/calibre/gui2/tag_browser/view.py b/src/calibre/gui2/tag_browser/view.py index e68b688da5..2ef1c02786 100644 --- a/src/calibre/gui2/tag_browser/view.py +++ b/src/calibre/gui2/tag_browser/view.py @@ -18,7 +18,7 @@ from PyQt5.Qt import (QStyledItemDelegate, Qt, QTreeView, pyqtSignal, QSize, from calibre import sanitize_file_name_unicode from calibre.constants import config_dir from calibre.gui2.tag_browser.model import (TagTreeItem, TAG_SEARCH_STATES, - TagsModel) + TagsModel, DRAG_IMAGE_ROLE) from calibre.gui2 import config, gprefs, choose_files, pixmap_to_data from calibre.utils.icu import sort_key @@ -254,7 +254,7 @@ class TagsView(QTreeView): # {{{ QTreeView.mouseMoveEvent(self, event) return md = self._model.mimeData([dex]) - pixmap = dex.data(Qt.DecorationRole).pixmap(25, 25) + pixmap = dex.data(DRAG_IMAGE_ROLE).pixmap(25, 25) drag = QDrag(self) drag.setPixmap(pixmap) drag.setMimeData(md)