Patch from Victor V. Kryukov

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29500 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn 2004-09-28 16:46:43 +00:00
parent 5b33ae84fd
commit d531898b10

View File

@ -33,7 +33,8 @@ else:
class XMLTree(wx.TreeCtrl): class XMLTree(wx.TreeCtrl):
def __init__(self, parent, ID): def __init__(self, parent, ID):
wx.TreeCtrl.__init__(self, parent, ID) wx.TreeCtrl.__init__(self, parent, ID)
self.nodeStack = [self.AddRoot("Root")] self._root = self.AddRoot("Root")
self.nodeStack = [self._root]
# Trees need an image list to do DnD... # Trees need an image list to do DnD...
self.il = wx.ImageList(16,16) self.il = wx.ImageList(16,16)
@ -51,6 +52,15 @@ else:
self.draggingItem = item self.draggingItem = item
event.Allow() # if DnD of this item is okay Allow it. event.Allow() # if DnD of this item is okay Allow it.
def IsDescendant(self, firstItem, secondItem):
"Recursive check if firstItem is a descendant of a secondItem."
if firstItem == self._root:
return False
parentItem = self.GetItemParent(firstItem)
if parentItem == secondItem:
return True
else:
return self.IsDescendant(parentItem, secondItem)
def OnEndDrag(self, evt): def OnEndDrag(self, evt):
itemSrc = self.draggingItem itemSrc = self.draggingItem
@ -61,6 +71,10 @@ else:
print "Can't drag to here..." print "Can't drag to here..."
return return
if self.IsDescendant(itemDst, itemSrc):
print "Can't move item to its descendant"
return
# For this simple example just take the text of the source item # For this simple example just take the text of the source item
# and append it to the destination item. In real life you would # and append it to the destination item. In real life you would
# possibly want to copy subtrees... # possibly want to copy subtrees...