X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/486afba9a43f8389a6d5715c1f98739b998a3d0a..c764029c20f8edf64dcbe9fc3649773c3063227a:/wxPython/wx/lib/floatcanvas/FloatCanvas.py diff --git a/wxPython/wx/lib/floatcanvas/FloatCanvas.py b/wxPython/wx/lib/floatcanvas/FloatCanvas.py index ce5c06179e..5a9b74186c 100644 --- a/wxPython/wx/lib/floatcanvas/FloatCanvas.py +++ b/wxPython/wx/lib/floatcanvas/FloatCanvas.py @@ -1630,8 +1630,9 @@ class ScaledTextBox(DrawObject, TextObjectMixin): ## If so, limit it. Would it be better just to not draw it? ## note that this limit is dependent on how much memory you have, etc. Size = min(Size, self.MaxFontSize) - - dc.SetFont(self.SetFont(Size, self.Family, self.Style, self.Weight, self.Underline, self.FaceName)) + + font = self.SetFont(Size, self.Family, self.Style, self.Weight, self.Underline, self.FaceName) + dc.SetFont(font) dc.SetTextForeground(self.Color) dc.SetBackgroundMode(wx.TRANSPARENT) @@ -1881,7 +1882,7 @@ class FloatCanvas(wx.Panel): ## create the Hit Test Dicts: self.HitDict = None - + self._HTdc = None self._DrawList = [] self._ForeDrawList = [] @@ -1905,8 +1906,12 @@ class FloatCanvas(wx.Panel): self.ObjectUnderMouse = None # called just to make sure everything is initialized - ##self.OnSize(None) - + # this is a bug on OS-X, maybe it's not required? + self.SizeTimer = wx.PyTimer(self.OnSizeTimer) # timer to give a delay when re-sizing so that bufferes aren't re-built too many times. + + self.InitializePanel() + self.MakeNewBuffers() + self.InHereNum = 0 self.CreateCursors() @@ -2130,7 +2135,7 @@ class FloatCanvas(wx.Panel): pass def LeftUpEvent(self,event): - if self.HasCapture(): + if self.HasCapture(): self.ReleaseMouse() if self.GUIMode: if self.GUIMode == "ZoomIn": @@ -2306,15 +2311,25 @@ class FloatCanvas(wx.Panel): else: self._ForegroundHTdc = None - def OnSize(self,event): - self.PanelSize = array(self.GetClientSizeTuple(),Int32) + def OnSize(self, event=None): + self.InitializePanel() + self.SizeTimer.Start(50, oneShot=True) + + def OnSizeTimer(self, event=None): + self.MakeNewBuffers() + self.Draw() + + def InitializePanel(self): + self.PanelSize = self.GetClientSizeTuple() + if self.PanelSize == (0,0): + ## OS-X sometimes gives a Size event when the panel is size (0,0) + self.PanelSize = (2,2) + self.PanelSize = array(self.PanelSize, Int32) self.HalfPanelSize = self.PanelSize / 2 # lrk: added for speed in WorldToPixel if self.PanelSize[0] == 0 or self.PanelSize[1] == 0: self.AspectRatio = 1.0 else: self.AspectRatio = float(self.PanelSize[0]) / self.PanelSize[1] - self.MakeNewBuffers() - self.Draw() def OnPaint(self, event): dc = wx.PaintDC(self) @@ -2338,7 +2353,7 @@ class FloatCanvas(wx.Panel): animation, for instance. """ - if sometrue(self.PanelSize < 1 ): # it's possible for this to get called before being properly initialized. + if sometrue(self.PanelSize <= 2 ): # it's possible for this to get called before being properly initialized. return if self.Debug: start = clock() ScreenDC = wx.ClientDC(self) @@ -2451,8 +2466,6 @@ class FloatCanvas(wx.Panel): pass else: raise FloatCanvasError('CoordType must be either "Panel", "Pixel", or "World"') - - #print "shifting by:", shift self.ViewPortCenter = self.ViewPortCenter + shift self.MapProjectionVector = self.ProjectionFun(self.ViewPortCenter) @@ -2585,7 +2598,7 @@ class FloatCanvas(wx.Panel): self.BoundingBox = None self.ViewPortCenter= array( (0,0), Float) self.TransformVector = array( (1,-1), Float) - self.MapProjectionVector = array( (1,1), Float) + self.MapProjectionVector = array( (1,1), Float) self.Scale = 1 self.BoundingBoxDirty = False