Fix broken emptu trash feature (#701)
This commit is contained in:
+9
-4
@@ -451,14 +451,14 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
for tHandle in self.getTreeFromHandle(trashHandle):
|
for tHandle in self.getTreeFromHandle(trashHandle):
|
||||||
if tHandle == trashHandle:
|
if tHandle == trashHandle:
|
||||||
continue
|
continue
|
||||||
self.deleteItem(tHandle, alreadyAsked=True)
|
self.deleteItem(tHandle, alreadyAsked=True, bulkAction=True)
|
||||||
|
|
||||||
if nTrash > 0:
|
if nTrash > 0:
|
||||||
self._setTreeChanged(True)
|
self._setTreeChanged(True)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def deleteItem(self, tHandle=None, alreadyAsked=False, askForTrash=False):
|
def deleteItem(self, tHandle=None, alreadyAsked=False, askForTrash=False, bulkAction=False):
|
||||||
"""Delete an item from the project tree. As a first step, files are
|
"""Delete an item from the project tree. As a first step, files are
|
||||||
moved to the Trash folder. Permanent deletion is a second step. This
|
moved to the Trash folder. Permanent deletion is a second step. This
|
||||||
second step also deletes the item from the project object as well as
|
second step also deletes the item from the project object as well as
|
||||||
@@ -469,24 +469,27 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
logger.error("No project open")
|
logger.error("No project open")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if not self.hasFocus():
|
if not self.hasFocus() and not bulkAction:
|
||||||
|
logger.info("Delete action blocked due to no widget focus")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if tHandle is None:
|
if tHandle is None:
|
||||||
tHandle = self.getSelectedHandle()
|
tHandle = self.getSelectedHandle()
|
||||||
|
|
||||||
if tHandle is None:
|
if tHandle is None:
|
||||||
|
logger.error("There is no item to delete")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
trItemS = self._getTreeItem(tHandle)
|
trItemS = self._getTreeItem(tHandle)
|
||||||
nwItemS = self.theProject.projTree[tHandle]
|
nwItemS = self.theProject.projTree[tHandle]
|
||||||
|
|
||||||
if trItemS is None or nwItemS is None:
|
if trItemS is None or nwItemS is None:
|
||||||
|
logger.error("Could not find tree item for deletion")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
wCount = int(trItemS.data(self.C_COUNT, Qt.UserRole))
|
wCount = int(trItemS.data(self.C_COUNT, Qt.UserRole))
|
||||||
if nwItemS.itemType == nwItemType.FILE:
|
if nwItemS.itemType == nwItemType.FILE:
|
||||||
logger.debug("User requested file %s moved to trash" % tHandle)
|
logger.debug("User requested file %s deleted" % tHandle)
|
||||||
trItemP = trItemS.parent()
|
trItemP = trItemS.parent()
|
||||||
trItemT = self._addTrashRoot()
|
trItemT = self._addTrashRoot()
|
||||||
if trItemP is None or trItemT is None:
|
if trItemP is None or trItemT is None:
|
||||||
@@ -540,6 +543,8 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
if pHandle is None:
|
if pHandle is None:
|
||||||
logger.warning("File has no parent item")
|
logger.warning("File has no parent item")
|
||||||
|
|
||||||
|
logger.debug("Moving file %s to trash" % tHandle)
|
||||||
|
|
||||||
self.propagateCount(tHandle, 0)
|
self.propagateCount(tHandle, 0)
|
||||||
tIndex = trItemP.indexOfChild(trItemS)
|
tIndex = trItemP.indexOfChild(trItemS)
|
||||||
trItemC = trItemP.takeChild(tIndex)
|
trItemC = trItemP.takeChild(tIndex)
|
||||||
|
|||||||
Reference in New Issue
Block a user