Fix drag and drop word propagation
This commit is contained in:
+18
-12
@@ -435,6 +435,7 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
logger.error("Could not find tree item for deletion")
|
logger.error("Could not find tree item for deletion")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
wCount = self._getItemWordCount(tHandle)
|
||||||
if nwItemS.itemType == nwItemType.FILE:
|
if nwItemS.itemType == nwItemType.FILE:
|
||||||
logger.debug("User requested file '%s' deleted", tHandle)
|
logger.debug("User requested file '%s' deleted", tHandle)
|
||||||
trItemP = trItemS.parent()
|
trItemP = trItemS.parent()
|
||||||
@@ -493,7 +494,7 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
tIndex = trItemP.indexOfChild(trItemS)
|
tIndex = trItemP.indexOfChild(trItemS)
|
||||||
trItemC = trItemP.takeChild(tIndex)
|
trItemC = trItemP.takeChild(tIndex)
|
||||||
trItemT.addChild(trItemC)
|
trItemT.addChild(trItemC)
|
||||||
self._postItemMove(tHandle)
|
self._postItemMove(tHandle, wCount)
|
||||||
self._recordLastMove(trItemS, trItemP, tIndex)
|
self._recordLastMove(trItemS, trItemP, tIndex)
|
||||||
self._setTreeChanged(True)
|
self._setTreeChanged(True)
|
||||||
|
|
||||||
@@ -649,13 +650,14 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
dHandle = dstItem.data(self.C_NAME, Qt.UserRole)
|
dHandle = dstItem.data(self.C_NAME, Qt.UserRole)
|
||||||
logger.debug("Moving item '%s' back to '%s', index %d", sHandle, dHandle, dstIndex)
|
logger.debug("Moving item '%s' back to '%s', index %d", sHandle, dHandle, dstIndex)
|
||||||
|
|
||||||
|
wCount = self._getItemWordCount(sHandle)
|
||||||
self.propagateCount(sHandle, 0)
|
self.propagateCount(sHandle, 0)
|
||||||
parItem = srcItem.parent()
|
parItem = srcItem.parent()
|
||||||
srcIndex = parItem.indexOfChild(srcItem)
|
srcIndex = parItem.indexOfChild(srcItem)
|
||||||
movItem = parItem.takeChild(srcIndex)
|
movItem = parItem.takeChild(srcIndex)
|
||||||
dstItem.insertChild(dstIndex, movItem)
|
dstItem.insertChild(dstIndex, movItem)
|
||||||
|
|
||||||
self._postItemMove(sHandle)
|
self._postItemMove(sHandle, wCount)
|
||||||
|
|
||||||
self.clearSelection()
|
self.clearSelection()
|
||||||
movItem.setSelected(True)
|
movItem.setSelected(True)
|
||||||
@@ -768,18 +770,23 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
|
|
||||||
logger.debug("Drag'n'drop of item '%s' accepted", sHandle)
|
logger.debug("Drag'n'drop of item '%s' accepted", sHandle)
|
||||||
|
|
||||||
self.propagateCount(sHandle, 0)
|
|
||||||
QTreeWidget.dropEvent(self, theEvent)
|
|
||||||
self._postItemMove(sHandle)
|
|
||||||
|
|
||||||
# Record undo information
|
|
||||||
sItem = self._getTreeItem(sHandle)
|
sItem = self._getTreeItem(sHandle)
|
||||||
|
isExpanded = False
|
||||||
|
if sItem is not None:
|
||||||
|
isExpanded = sItem.isExpanded()
|
||||||
|
|
||||||
pItem = sItem.parent()
|
pItem = sItem.parent()
|
||||||
pIndex = 0
|
pIndex = 0
|
||||||
if pItem is not None:
|
if pItem is not None:
|
||||||
pIndex = pItem.indexOfChild(sItem)
|
pIndex = pItem.indexOfChild(sItem)
|
||||||
|
|
||||||
|
wCount = self._getItemWordCount(sHandle)
|
||||||
|
self.propagateCount(sHandle, 0)
|
||||||
|
|
||||||
|
QTreeWidget.dropEvent(self, theEvent)
|
||||||
|
self._postItemMove(sHandle, wCount)
|
||||||
self._recordLastMove(sItem, pItem, pIndex)
|
self._recordLastMove(sItem, pItem, pIndex)
|
||||||
|
sItem.setExpanded(isExpanded)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -787,7 +794,7 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
# Internal Functions
|
# Internal Functions
|
||||||
##
|
##
|
||||||
|
|
||||||
def _postItemMove(self, tHandle):
|
def _postItemMove(self, tHandle, wCount):
|
||||||
"""Run various maintenance tasks for a moved item.
|
"""Run various maintenance tasks for a moved item.
|
||||||
"""
|
"""
|
||||||
trItemS = self._getTreeItem(tHandle)
|
trItemS = self._getTreeItem(tHandle)
|
||||||
@@ -807,19 +814,18 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
logger.debug("A total of %d item(s) were moved", len(mHandles))
|
logger.debug("A total of %d item(s) were moved", len(mHandles))
|
||||||
for mHandle in mHandles:
|
for mHandle in mHandles:
|
||||||
logger.debug("Updating item '%s'", mHandle)
|
logger.debug("Updating item '%s'", mHandle)
|
||||||
wCount = self._getItemWordCount(mHandle)
|
|
||||||
self.theProject.projTree.updateItemData(mHandle)
|
self.theProject.projTree.updateItemData(mHandle)
|
||||||
|
|
||||||
# Update the index
|
# Update the index
|
||||||
if nwItemS.isInactive():
|
if nwItemS.isInactive():
|
||||||
self.theIndex.deleteHandle(tHandle)
|
self.theIndex.deleteHandle(mHandle)
|
||||||
else:
|
else:
|
||||||
self.theIndex.reIndexHandle(tHandle)
|
self.theIndex.reIndexHandle(mHandle)
|
||||||
|
|
||||||
self.setTreeItemValues(mHandle)
|
self.setTreeItemValues(mHandle)
|
||||||
self.propagateCount(mHandle, wCount)
|
|
||||||
|
|
||||||
# Trigger dependent updates
|
# Trigger dependent updates
|
||||||
|
self.propagateCount(tHandle, wCount)
|
||||||
self._setTreeChanged(True)
|
self._setTreeChanged(True)
|
||||||
self._emitItemChange(tHandle)
|
self._emitItemChange(tHandle)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user