Better cleanup of circular references.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
84d08d87eb
commit
ab552aa4d7
@ -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):
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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."""
|
||||
|
@ -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:
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user