Use wx.AutoBufferedPaintDC instead of wx.BufferedPaintDC (helps with drawing on linux)

This commit is contained in:
blitzmann
2017-11-21 00:05:52 -05:00
parent a52b9e58e9
commit 0f94557699
10 changed files with 36 additions and 14 deletions

View File

@@ -59,6 +59,8 @@ class PFSearchBox(wx.Window):
self.EditBox.Bind(wx.EVT_TEXT, self.OnText)
self.EditBox.Bind(wx.EVT_TEXT_ENTER, self.OnTextEnter)
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
self.SetMinSize(size)
def OnText(self, event):
@@ -224,7 +226,7 @@ class PFSearchBox(wx.Window):
self.EditBox.SetSize((self.cancelButtonX - self.padding - self.editX, -1))
def OnPaint(self, event):
dc = wx.BufferedPaintDC(self)
dc = wx.AutoBufferedPaintDC(self)
bkColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)
sepColor = colorUtils.GetSuitable(bkColor, 0.2)

View File

@@ -49,6 +49,7 @@ class PFGaugePreview(wx.Window):
self.Bind(wx.EVT_LEAVE_WINDOW, self.OnWindowLeave)
self.Bind(wx.EVT_TIMER, self.OnTimer)
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBk)
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
def OnEraseBk(self, event):
pass
@@ -110,7 +111,7 @@ class PFGaugePreview(wx.Window):
def OnPaint(self, event):
rect = self.GetClientRect()
dc = wx.BufferedPaintDC(self)
dc = wx.AutoBufferedPaintDC(self)
dc.SetBackground(wx.Brush(self.bkColor))
dc.Clear()

View File

@@ -19,6 +19,8 @@ class PFBitmapFrame(wx.Frame):
self.transp = 0
self.SetSize((bitmap.GetWidth(), bitmap.GetHeight()))
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
self.SetTransparent(0)
self.Refresh()
@@ -51,7 +53,7 @@ class PFBitmapFrame(wx.Frame):
def OnWindowPaint(self, event):
rect = self.GetRect()
canvas = wx.Bitmap(rect.width, rect.height)
mdc = wx.BufferedPaintDC(self)
mdc = wx.AutoBufferedPaintDC(self)
mdc.SelectObject(canvas)
mdc.DrawBitmap(self.bitmap, 0, 0)
mdc.SetPen(wx.Pen("#000000", width=1))

View File

@@ -85,6 +85,8 @@ class RaceSelector(wx.Window):
self.Layout()
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
def OnMouseMove(self, event):
mx, my = event.GetPosition()
@@ -170,7 +172,7 @@ class RaceSelector(wx.Window):
# bkColor = colorUtils.GetSuitable(windowColor, 0.1)
sepColor = colorUtils.GetSuitable(windowColor, 0.2)
mdc = wx.BufferedPaintDC(self)
mdc = wx.AutoBufferedPaintDC(self)
bkBitmap = drawUtils.RenderGradientBar(windowColor, rect.width, rect.height, 0.1, 0.1, 0.2, 2)
mdc.DrawBitmap(bkBitmap, 0, 0, True)

View File

@@ -241,7 +241,7 @@ class PFToolbar(object):
class SFBrowserItem(wx.Window):
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=(0, 16), style=0):
wx.Window.__init__(self, parent, id, pos, size, style)
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
self.highlighted = False
self.selected = False
self.bkBitmap = None
@@ -281,7 +281,7 @@ class SFBrowserItem(wx.Window):
wx.Window.Refresh(self)
def OnPaint(self, event):
mdc = wx.BufferedPaintDC(self)
mdc = wx.AutoBufferedPaintDC(self)
self.RenderBackground()

View File

@@ -727,6 +727,8 @@ class _TabsContainer(wx.Panel):
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_SYS_COLOUR_CHANGED, self.OnSysColourChanged)
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
def OnSysColourChanged(self, event):
for tab in self.tabs:
tab.InitTab()
@@ -1096,10 +1098,7 @@ class _TabsContainer(wx.Panel):
self.Refresh()
def OnPaint(self, event):
if "wxGTK" in wx.PlatformInfo:
mdc = wx.AutoBufferedPaintDC(self)
else:
mdc = wx.BufferedPaintDC(self)
mdc = wx.AutoBufferedPaintDC(self)
# if 'wxMac' in wx.PlatformInfo:
# color = wx.Colour(0, 0, 0)
@@ -1299,7 +1298,7 @@ class PFNotebookPagePreview(wx.Frame):
size=wx.DefaultSize, style=wx.NO_BORDER |
wx.FRAME_NO_TASKBAR |
wx.STAY_ON_TOP)
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
self.title = title
self.bitmap = bitmap
self.SetSize((bitmap.GetWidth(), bitmap.GetHeight()))
@@ -1371,7 +1370,7 @@ class PFNotebookPagePreview(wx.Frame):
def OnWindowPaint(self, event):
rect = self.GetRect()
canvas = wx.Bitmap(rect.width, rect.height)
mdc = wx.BufferedPaintDC(self)
mdc = wx.AudoBufferedPaintDC(self)
mdc.SelectObject(canvas)
color = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)
mdc.SetBackground(wx.Brush(color))

View File

@@ -43,6 +43,11 @@ class DevTools(wx.Dialog):
self.idBtn.Bind(wx.EVT_BUTTON, self.objects_by_id)
self.gcCollect = wx.Button(self, wx.ID_ANY, "GC Collect", wx.DefaultPosition, wx.DefaultSize, 0)
mainSizer.Add(self.gcCollect, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
self.gcCollect.Bind(wx.EVT_BUTTON, self.gc_collect)
self.SetSizer(mainSizer)
self.Layout()
@@ -62,6 +67,13 @@ class DevTools(wx.Dialog):
if id(obj) == input:
print(obj)
print(bool(obj))
print(str(len(gc.get_referents(obj))) + " references")
break
else:
print(None)
def gc_collect(self, evt):
print(gc.collect())
print(gc.get_debug())
print(gc.get_stats())

View File

@@ -1016,6 +1016,7 @@ class MainFrame(wx.Frame):
del self.waitDialog
def openGraphFrame(self, event):
if not self.graphFrame:
self.graphFrame = GraphFrame(self)

View File

@@ -75,6 +75,7 @@ class PyGauge(wx.Window):
self.Bind(wx.EVT_TIMER, self.OnTimer)
self.Bind(wx.EVT_ENTER_WINDOW, self.OnWindowEnter)
self.Bind(wx.EVT_LEAVE_WINDOW, self.OnWindowLeave)
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
def OnEraseBackground(self, event):
pass
@@ -212,7 +213,7 @@ class PyGauge(wx.Window):
(self._value, self._max_range if float(self._max_range) > 0.01 else 0))
def OnPaint(self, event):
dc = wx.BufferedPaintDC(self)
dc = wx.AutoBufferedPaintDC(self)
rect = self.GetClientRect()
dc.SetBackground(wx.Brush(self.GetBackgroundColour()))

View File

@@ -24,6 +24,8 @@ class LoadAnimation(wx.Window):
self.animTimer.Start(self.animTimerPeriod)
self.SetBackgroundStyle(wx.BG_STYLE_PAINT)
def Play(self):
if self.animTimer.IsRunning():
self.animTimer.Stop()
@@ -52,7 +54,7 @@ class LoadAnimation(wx.Window):
def OnPaint(self, event):
rect = self.GetClientRect()
dc = wx.BufferedPaintDC(self)
dc = wx.AutoBufferedPaintDC(self)
windowColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)
dc.SetBackground(wx.Brush(windowColor))
dc.Clear()