]> git.saurik.com Git - wxWidgets.git/commitdiff
Patch from Victor V. Kryukov
authorRobin Dunn <robin@alldunn.com>
Tue, 28 Sep 2004 16:46:43 +0000 (16:46 +0000)
committerRobin Dunn <robin@alldunn.com>
Tue, 28 Sep 2004 16:46:43 +0000 (16:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29500 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/demo/XMLtreeview.py

index 113360e2d2ca24c6884c8702f09c99a980d3d025..91a624e179dad82ee619ed1cbf3a701b21d55e73 100644 (file)
@@ -33,7 +33,8 @@ else:
     class XMLTree(wx.TreeCtrl):
         def __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...
             self.il = wx.ImageList(16,16)
@@ -51,6 +52,15 @@ else:
                 self.draggingItem = item
                 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):
             itemSrc = self.draggingItem
@@ -61,6 +71,10 @@ else:
                 print "Can't drag to here..."
                 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
             # and append it to the destination item.  In real life you would
             # possibly want to copy subtrees...