Try to flicker less when redrawing lists

This commit is contained in:
DarkPhoenix
2019-08-12 15:13:51 +03:00
parent bcdefdc4ac
commit cc8def1cf5
3 changed files with 15 additions and 10 deletions

View File

@@ -185,8 +185,10 @@ class Display(wx.ListCtrl):
self.Select(row, True)
def populate(self, stuff):
if stuff is not None:
wasFrozen = self.IsFrozen()
if not wasFrozen:
self.Freeze()
listItemCount = self.GetItemCount()
stuffItemCount = len(stuff)
@@ -203,11 +205,15 @@ class Display(wx.ListCtrl):
for i in range(listItemCount - stuffItemCount):
self.DeleteItem(self.getLastItem())
self.Refresh()
if not wasFrozen:
self.Thaw()
def refresh(self, stuff):
if stuff is None:
return
wasFrozen = self.IsFrozen()
if not wasFrozen:
self.Freeze()
item = -1
for id_, st in enumerate(stuff):
@@ -259,6 +265,8 @@ class Display(wx.ListCtrl):
self.SetColumnWidth(i, headerWidth)
else:
self.SetColumnWidth(i, col.size)
if not wasFrozen:
self.Thaw()
def update(self, stuff):
self.populate(stuff)