From 500f5b83109015044d60cc49b4f522f6d2552a87 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Mon, 26 Aug 2019 14:47:34 +0300 Subject: [PATCH] Add redraw delay on fit changes --- graphs/gui/frame.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/graphs/gui/frame.py b/graphs/gui/frame.py index 2d20063f7..cfb311edb 100644 --- a/graphs/gui/frame.py +++ b/graphs/gui/frame.py @@ -38,6 +38,9 @@ from .ctrlPanel import GraphControlPanel pyfalog = Logger(__name__) +REDRAW_DELAY = 500 + + class GraphFrame(AuxiliaryFrame): def __init__(self, parent): @@ -90,6 +93,9 @@ class GraphFrame(AuxiliaryFrame): self.mainFrame.Bind(GE.GRAPH_OPTION_CHANGED, self.OnGraphOptionChanged) self.mainFrame.Bind(GE.EFFECTIVE_HP_TOGGLED, self.OnEffectiveHpToggled) + self.drawTimer = wx.Timer(self) + self.Bind(wx.EVT_TIMER, self.OnDrawTimer, self.drawTimer) + self.Layout() self.UpdateWindowSize() self.draw() @@ -128,7 +134,10 @@ class GraphFrame(AuxiliaryFrame): for fitID in event.fitIDs: self.clearCache(reason=GraphCacheCleanupReason.fitChanged, extraData=fitID) self.ctrlPanel.OnFitChanged(event) - self.draw() + # Data has to be recalculated - delay redraw + # to give time to finish UI update in main window + self.drawTimer.Stop() + self.drawTimer.Start(REDRAW_DELAY, True) def OnFitRemoved(self, event): event.Skip() @@ -184,7 +193,10 @@ class GraphFrame(AuxiliaryFrame): self.ctrlPanel.refreshAxeLabels(restoreSelection=True) self.Layout() self.clearCache(reason=GraphCacheCleanupReason.hpEffectivityChanged) - self.draw() + # Data has to be recalculated - delay redraw + # to give time to finish UI update in main window + self.drawTimer.Stop() + self.drawTimer.Start(REDRAW_DELAY, True) # Even if graph is not selected, keep it updated for idx in range(self.graphSelection.GetCount()): view = self.getView(idx=idx) @@ -202,6 +214,10 @@ class GraphFrame(AuxiliaryFrame): self.draw() event.Skip() + def OnDrawTimer(self, event): + event.Skip() + self.draw() + def OnClose(self, event): self.mainFrame.Unbind(GE.FIT_RENAMED, handler=self.OnFitRenamed) self.mainFrame.Unbind(GE.FIT_CHANGED, handler=self.OnFitChanged)