diff -r 3cc5663af196 -r 5f7445b582d4 controls/DebugVariablePanel/DebugVariablePanel.py --- a/controls/DebugVariablePanel/DebugVariablePanel.py Mon Jun 14 16:48:39 2021 +0200 +++ b/controls/DebugVariablePanel/DebugVariablePanel.py Wed Jun 16 12:15:02 2021 +0200 @@ -357,9 +357,13 @@ # Force refresh if graph is fixed because range of data received # is too small to fill data range selected - if self.Fixed and \ - self.Ticks.view[-1] - self.Ticks.view[0] < self.CurrentRange: - self.Force = True + if self.Fixed : + if self.Ticks.view[-1] - self.Ticks.view[0] < self.CurrentRange: + self.Force = True + if self.Ticks.view[0] > self.StartTick: + self.StartTick = self.Ticks.view[0] + self.Force = True + self.HasNewData = False self.RefreshView() @@ -388,14 +392,14 @@ if self.CursorTick is not None: cursor_tick = max(self.Ticks.view[0], min(self.CursorTick + move, self.Ticks.view[-1])) - cursor_tick_idx = np.searchsorted(self.Ticks.view, cursor_tick) + cursor_tick_idx = min(np.searchsorted(self.Ticks.view, cursor_tick), self.Ticks.count - 1) if self.Ticks.view[cursor_tick_idx] == self.CursorTick: cursor_tick_idx = max(0, min(cursor_tick_idx + abs(move) // move, self.Ticks.count - 1)) self.CursorTick = self.Ticks.view[cursor_tick_idx] self.StartTick = max( - self.Ticks.view[np.searchsorted(self.Ticks.view, self.CursorTick + self.CurrentRange)], + self.Ticks.view[min(np.searchsorted(self.Ticks.view, self.CursorTick - self.CurrentRange), self.Ticks.count - 1)], min(self.StartTick, self.CursorTick)) self.RefreshCanvasPosition() self.UpdateCursorTick() @@ -605,7 +609,7 @@ def SetCanvasPosition(self, tick): tick = max(self.Ticks.view[0], min(tick, self.Ticks.view[-1] - self.CurrentRange)) - self.StartTick = self.Ticks.view[np.searchsorted(self.Ticks.view, tick)] + self.StartTick = self.Ticks.view[min(np.searchsorted(self.Ticks.view, tick), self.Ticks.count - 1)] self.Fixed = True self.RefreshCanvasPosition() self.ForceRefresh() @@ -631,7 +635,7 @@ tick = self.StartTick + self.CurrentRange / 2. new_start_tick = min(tick - (tick - self.StartTick) * self.CurrentRange / current_range, self.Ticks.view[-1] - self.CurrentRange) - self.StartTick = self.Ticks.view[np.searchsorted(self.Ticks.view, - new_start_tick)] + self.StartTick = self.Ticks.view[min(np.searchsorted(self.Ticks.view, new_start_tick), self.Ticks.count - 1)] self.Fixed = new_start_tick < self.Ticks.view[-1] - self.CurrentRange self.ForceRefresh()