Merge from trunk

This commit is contained in:
Charles Haley 2010-10-05 03:46:56 +01:00
commit b281ba24e4
2 changed files with 18 additions and 6 deletions

View File

@ -490,28 +490,39 @@ class BooksView(QTableView): # {{{
drag.setMimeData(md)
cover = self.drag_icon(m.cover(self.currentIndex().row()),
len(selected) > 1)
drag.setHotSpot(QPoint(cover.width()//3, cover.height()//3))
drag.setHotSpot(QPoint(-15, -15))
drag.setPixmap(cover)
return drag
def event_has_mods(self, event=None):
mods = event.modifiers() if event is not None else \
QApplication.keyboardModifiers()
return mods & Qt.ControlModifier or mods & Qt.ShiftModifier
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
if event.button() == Qt.LeftButton and not self.event_has_mods():
self.drag_start_pos = event.pos()
return QTableView.mousePressEvent(self, event)
def mouseMoveEvent(self, event):
if self.drag_start_pos is None:
return QTableView.mouseMoveEvent(self, event)
if self.event_has_mods():
self.drag_start_pos = None
return
if not (event.buttons() & Qt.LeftButton) or \
self.drag_start_pos is None or \
QApplication.keyboardModifiers() != Qt.NoModifier or \
(event.pos() - self.drag_start_pos).manhattanLength() \
< QApplication.startDragDistance():
return QTableView.mouseMoveEvent(self, event)
return
index = self.indexAt(event.pos())
if not index.isValid():
return
drag = self.drag_data()
drag.exec_(Qt.CopyAction)
self.drag_start_pos = None
def dragEnterEvent(self, event):
if int(event.possibleActions() & Qt.CopyAction) + \
@ -645,7 +656,7 @@ class DeviceBooksView(BooksView): # {{{
drag.setMimeData(md)
cover = self.drag_icon(m.cover(self.currentIndex().row()), len(paths) >
1)
drag.setHotSpot(QPoint(cover.width()//3, cover.height()//3))
drag.setHotSpot(QPoint(-15, -15))
drag.setPixmap(cover)
return drag

View File

@ -83,6 +83,7 @@ class TagsView(QTreeView): # {{{
self.setItemDelegate(TagDelegate(self))
self.made_connections = False
self.setAcceptDrops(True)
self.setDragDropMode(self.DropOnly)
self.setDropIndicatorShown(True)
def set_database(self, db, tag_match, sort_by):