From d96c8ddf8509d60c14f236abde9560694a6b6a3b Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 23 Apr 2022 16:21:20 +0200 Subject: [PATCH] Remove all restrictions on drag and drop except in ROOT items --- novelwriter/gui/projtree.py | 44 +++++++++++-------------------------- 1 file changed, 13 insertions(+), 31 deletions(-) diff --git a/novelwriter/gui/projtree.py b/novelwriter/gui/projtree.py index 5358b082..39445dee 100644 --- a/novelwriter/gui/projtree.py +++ b/novelwriter/gui/projtree.py @@ -762,13 +762,9 @@ class GuiProjectTree(QTreeWidget): drop is allowed or not. Disallowed drops are cancelled. """ sHandle = self.getSelectedHandle() - if sHandle is None: - logger.error("No handle selected") - return - dIndex = self.indexAt(theEvent.pos()) - if not dIndex.isValid(): - logger.error("Invalid drop index") + if sHandle is None or not dIndex.isValid(): + logger.error("Invalid drag and drop event") return sItem = self._getTreeItem(sHandle) @@ -776,41 +772,27 @@ class GuiProjectTree(QTreeWidget): dHandle = dItem.data(self.C_NAME, Qt.UserRole) snItem = self.theProject.projTree[sHandle] dnItem = self.theProject.projTree[dHandle] - if dnItem is None: + + if snItem.itemType == nwItemType.ROOT or dnItem is None: + logger.debug("Drag'n'drop of item '%s' not accepted", sHandle) + theEvent.ignore() self.theParent.makeAlert(self.tr( "The item cannot be moved to that location." ), nwAlert.ERROR) return + logger.debug("Drag'n'drop of item '%s' accepted", sHandle) + + self.propagateCount(sHandle, 0) + QTreeWidget.dropEvent(self, theEvent) + self._postItemMove(sHandle) + pItem = sItem.parent() pIndex = 0 if pItem is not None: pIndex = pItem.indexOfChild(sItem) - # Determine if the drag and drop is allowed: - # - Files can be moved anywhere - # - Folders can only be moved within the same root folder - # - Root folders cannot be moved at all - - isFile = snItem.itemType == nwItemType.FILE - isRoot = snItem.itemType == nwItemType.ROOT - inSame = snItem.itemRoot == dnItem.itemRoot - - if (inSame or isFile) and not isRoot: - logger.debug("Drag'n'drop of item '%s' accepted", sHandle) - - self.propagateCount(sHandle, 0) - QTreeWidget.dropEvent(self, theEvent) - self._postItemMove(sHandle) - self._recordLastMove(sItem, pItem, pIndex) - - else: - logger.debug("Drag'n'drop of item '%s' not accepted", sHandle) - - theEvent.ignore() - self.theParent.makeAlert(self.tr( - "The item cannot be moved to that location." - ), nwAlert.ERROR) + self._recordLastMove(sItem, pItem, pIndex) return