Tag Browser: Use correct image for drag and drop even when item is showing the plus or minus icons

This commit is contained in:
Kovid Goyal 2014-10-04 20:46:55 +05:30
parent d5e2b1ae4c
commit ffc372e0c0
2 changed files with 7 additions and 2 deletions

View File

@ -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):

View File

@ -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)