X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6c75a4cf0f94cbe53bfde4fbcddff741158fbc7c..ad8d42f83cdf7a4f26969957e94ed166a1a5710e:/wxPython/demo/DragImage.py diff --git a/wxPython/demo/DragImage.py b/wxPython/demo/DragImage.py index c03fd9292c..d0173caf03 100644 --- a/wxPython/demo/DragImage.py +++ b/wxPython/demo/DragImage.py @@ -47,6 +47,7 @@ class DragCanvas(wx.ScrolledWindow): self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW)) self.bg_bmp = images.getBackgroundBitmap() + self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) # Make a shape from an image and mask. This one will demo # dragging outside the window @@ -57,6 +58,11 @@ class DragCanvas(wx.ScrolledWindow): shape.fullscreen = True self.shapes.append(shape) + bmp = images.getTheKidBitmap() + shape = DragShape(bmp) + shape.pos = (200, 5) + self.shapes.append(shape) + # Make a shape from some text text = "Some Text" bg_colour = wx.Colour(57, 115, 57) # matches the bg image @@ -83,11 +89,6 @@ class DragCanvas(wx.ScrolledWindow): self.shapes.append(shape) - bmp = images.getTheKidBitmap() - shape = DragShape(bmp) - shape.pos = (200, 5) - self.shapes.append(shape) - self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) @@ -135,21 +136,13 @@ class DragCanvas(wx.ScrolledWindow): return shape return None - # Remove a shape from the display - def EraseShape(self, shape, dc): - r = shape.GetRect() - dc.SetClippingRect(r) - self.TileBackground(dc) - self.DrawShapes(dc) - dc.DestroyClippingRegion() # Clears the background, then redraws it. If the DC is passed, then # we only do so in the area so designated. Otherwise, it's the whole thing. def OnEraseBackground(self, evt): dc = evt.GetDC() - if not dc: - dc = wxClientDC(self) + dc = wx.ClientDC(self) rect = self.GetUpdateRegion().GetBox() dc.SetClippingRect(rect) self.TileBackground(dc) @@ -184,10 +177,8 @@ class DragCanvas(wx.ScrolledWindow): self.dragImage.EndDrag() self.dragImage = None - dc = wx.ClientDC(self) - if self.hiliteShape: - self.hiliteShape.Draw(dc) + self.RefreshRect(self.hiliteShape.GetRect()) self.hiliteShape = None # reposition and draw the shape @@ -211,9 +202,10 @@ class DragCanvas(wx.ScrolledWindow): ) self.dragShape.shown = True - self.dragShape.Draw(dc) + self.RefreshRect(self.dragShape.GetRect()) self.dragShape = None + # The mouse is moving def OnMotion(self, evt): # Ignore mouse movement if we're not dragging. @@ -231,11 +223,11 @@ class DragCanvas(wx.ScrolledWindow): if dx <= tolerance and dy <= tolerance: return - # erase the shape since it will be drawn independently now - dc = wx.ClientDC(self) + # refresh the area of the window where the shape was so it + # will get erased. self.dragShape.shown = False - self.EraseShape(self.dragShape, dc) - + self.RefreshRect(self.dragShape.GetRect(), True) + self.Update() if self.dragShape.text: self.dragImage = wx.DragString(self.dragShape.text,