]> git.saurik.com Git - wxWidgets.git/commitdiff
Better cleanup of circular references.
authorRobin Dunn <robin@alldunn.com>
Fri, 3 Feb 2006 06:51:34 +0000 (06:51 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 3 Feb 2006 06:51:34 +0000 (06:51 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/wx/lib/ogl/_basic.py
wxPython/wx/lib/ogl/_composit.py
wxPython/wx/lib/ogl/_diagram.py
wxPython/wx/lib/ogl/_drawn.py
wxPython/wx/lib/ogl/_lines.py

index 441862b7d05a88e0c06a4959c5ca85551810d4d9..757c5c2115da98632b52243ad34649c165f62b35 100644 (file)
@@ -288,9 +288,16 @@ class Shape(ShapeEvtHandler):
         return str(self.__class__).split(".")[-1][:-2]
 
     def Delete(self):
+        """
+        Fully disconnect this shape from parents, children, the
+        canvas, etc.
+        """
         if self._parent:
             self._parent.GetChildren().remove(self)
 
+        for child in self.GetChildren():
+            child.Delete()
+
         self.ClearText()
         self.ClearRegions()
         self.ClearAttachments()
@@ -3040,7 +3047,7 @@ class ShapeRegion(object):
             return None
         if self._penColour=="Invisible":
             return None
-        self._actualPenObject = wx.ThePenList.FindOrCreatePen(self._penColour, 1, self._penStyle)
+        self._actualPenObject = wx.Pen(self._penColour, 1, self._penStyle)
         return self._actualPenObject
 
     def SetText(self, s):
index 812b7539a153495042576115a5261f03890586a9..d07c3993a5c7d6ad0fc85b7eac064ecec34b0718 100644 (file)
@@ -559,6 +559,18 @@ class CompositeShape(RectangleShape):
         self.RemoveChildFromConstraints(child)
         child.SetParent(None)
 
+    def Delete(self):
+        """
+        Fully disconnect this shape from parents, children, the
+        canvas, etc.
+        """
+        for child in self.GetChildren():
+            self.RemoveChild(child)
+            child.Delete()
+        RectangleShape.Delete(self)
+        self._constraints = [] 
+        self._divisions = []
+
     def DeleteConstraintsInvolvingChild(self, child):
         """This function deletes constraints which mention the given child.
 
index 8e8f8347246b95412b4da1871a599d853b2bb1ee..6bdf00185f00e3267409f0d0ced4dd4618aae960 100644 (file)
@@ -78,6 +78,7 @@ class Diagram(object):
         for shape in self._shapeList[:]:
             if not shape.GetParent():
                 self.RemoveShape(shape)
+                shape.Delete()
                 
     def ShowAll(self, show):
         """Call Show for each shape in the diagram."""
index 222cb08c76b97fe4e0aeca9d8776e27c0550ebd7..7f2c1d9831dac3aad2d48c9227a3e557ae34e7ef 100644 (file)
@@ -90,7 +90,7 @@ class OpSetGDI(DrawOp):
             if self._gdiIndex in self._image._outlineColours:
                 # Need to construct a brush to match the outline pen's colour
                 if self._image._outlinePen:
-                    br = wx.TheBrushList.FindOrCreateBrush(self._image._outlinePen, wx.SOLID)
+                    br = wx.Brush(self._image._outlinePen, wx.SOLID)
                     if br:
                         dc.SetBrush(br)
             elif self._gdiIndex in self._image._fillColours:
index d316630fbbe58d8dd62e0e8406b82a746c38f06c..fdee0ed6b5f400eb6b83058272cdea0d02a95a9a 100644 (file)
@@ -131,7 +131,7 @@ class LabelShape(RectangleShape):
         RectangleShape.__init__(self, w, h)
         self._lineShape = parent
         self._shapeRegion = region
-        self.SetPen(wx.ThePenList.FindOrCreatePen(wx.Colour(0, 0, 0), 1, wx.DOT))
+        self.SetPen(wx.Pen(wx.Colour(0, 0, 0), 1, wx.DOT))
 
     def OnDraw(self, dc):
         if self._lineShape and not self._lineShape.GetDrawHandles():
@@ -1027,7 +1027,7 @@ class LineShape(Shape):
         # Problem with pen - if not a solid pen, does strange things
         # to the arrowhead. So make (get) a new pen that's solid.
         if self._pen and self._pen.GetStyle() != wx.SOLID:
-            solid_pen = wx.ThePenList.FindOrCreatePen(self._pen.GetColour(), 1, wx.SOLID)
+            solid_pen = wx.Pen(self._pen.GetColour(), 1, wx.SOLID)
             if solid_pen:
                 dc.SetPen(solid_pen)