Skip to content

Commit 02ee15a

Browse files
committed
Fix dragging for all views
1 parent 1a996a5 commit 02ee15a

File tree

6 files changed

+40
-16
lines changed

6 files changed

+40
-16
lines changed

src/windows/views/effects_listview.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ def startDrag(self, event):
6262
log.warning("No draggable items found in model!")
6363
return False
6464

65-
icon = current.data(Qt.DecorationRole)
65+
# Get icon from column 0 on same row as current item
66+
icon = current.sibling(current.row(), 0).data(Qt.DecorationRole)
6667

6768
# Start drag operation
6869
drag = QDrag(self)

src/windows/views/effects_treeview.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ def startDrag(self, event):
6262
log.warning("No draggable items found in model!")
6363
return False
6464

65-
icon = current.data(Qt.DecorationRole)
65+
# Get icon from column 0 on same row as current item
66+
icon = current.sibling(current.row(), 0).data(Qt.DecorationRole)
6667

6768
# Start drag operation
6869
drag = QDrag(self)

src/windows/views/files_listview.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,16 +93,25 @@ def dragEnterEvent(self, event):
9393
def startDrag(self, supportedActions):
9494
""" Override startDrag method to display custom icon """
9595

96-
# The relevant model for index values
97-
model = self.model()
96+
# Get first column indexes for all selected rows
97+
selected = self.selectionModel().selectedRows(0)
98+
99+
# Get image of current item
100+
current = self.selectionModel().currentIndex()
101+
if not current.isValid() and selected:
102+
current = selected[0]
103+
104+
if not current.isValid():
105+
# We can't find anything to drag
106+
log.warning("No draggable items found in model!")
107+
return False
98108

99-
# Get image of selected item
100-
selected_rows = self.selectionModel().selectedRows(0)
101-
icon = selected_rows[0].data(Qt.DecorationRole)
109+
# Get icon from column 0 on same row as current item
110+
icon = current.sibling(current.row(), 0).data(Qt.DecorationRole)
102111

103112
# Start drag operation
104113
drag = QDrag(self)
105-
drag.setMimeData(model.mimeData(self.selectionModel().selectedIndexes()))
114+
drag.setMimeData(self.model().mimeData(selected))
106115
drag.setPixmap(icon.pixmap(QSize(self.drag_item_size, self.drag_item_size)))
107116
drag.setHotSpot(QPoint(self.drag_item_size / 2, self.drag_item_size / 2))
108117
drag.exec_()

src/windows/views/files_treeview.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,16 +93,26 @@ def dragEnterEvent(self, event):
9393

9494
def startDrag(self, supportedActions):
9595
""" Override startDrag method to display custom icon """
96-
# The relevant model for index values
97-
model = self.model()
9896

99-
# Get indexes from column 0 of selected row
100-
selected_rows = self.selectionModel().selectedRows(0)
101-
icon = selected_rows[0].data(Qt.DecorationRole)
97+
# Get first column indexes for all selected rows
98+
selected = self.selectionModel().selectedRows(0)
99+
100+
# Get image of current item
101+
current = self.selectionModel().currentIndex()
102+
if not current.isValid() and selected:
103+
current = selected[0]
104+
105+
if not current.isValid():
106+
# We can't find anything to drag
107+
log.warning("No draggable items found in model!")
108+
return False
109+
110+
# Get icon from column 0 on same row as current item
111+
icon = current.sibling(current.row(), 0).data(Qt.DecorationRole)
102112

103113
# Start drag operation
104114
drag = QDrag(self)
105-
drag.setMimeData(model.mimeData(self.selectionModel().selectedRows()))
115+
drag.setMimeData(self.model().mimeData(selected))
106116
drag.setPixmap(icon.pixmap(QSize(self.drag_item_size, self.drag_item_size)))
107117
drag.setHotSpot(QPoint(self.drag_item_size / 2, self.drag_item_size / 2))
108118
drag.exec_()

src/windows/views/transitions_listview.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ def startDrag(self, event):
6565
log.warning("No draggable items found in model!")
6666
return False
6767

68-
icon = current.data(Qt.DecorationRole)
68+
# Get icon from column 0 on same row as current item
69+
icon = current.sibling(current.row(), 0).data(Qt.DecorationRole)
6970

7071
# Start drag operation
7172
drag = QDrag(self)

src/windows/views/transitions_treeview.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ def startDrag(self, event):
6262
log.warning("No draggable items found in model!")
6363
return False
6464

65-
icon = current.data(Qt.DecorationRole)
65+
# Get icon from column 0 on same row as current item
66+
icon = current.sibling(current.row(), 0).data(Qt.DecorationRole)
67+
6668
# Start drag operation
6769
drag = QDrag(self)
6870
drag.setMimeData(self.model().mimeData(selected))

0 commit comments

Comments
 (0)