diff --git a/rendercanvas/base.py b/rendercanvas/base.py index ae97e566..ee6fa4d8 100644 --- a/rendercanvas/base.py +++ b/rendercanvas/base.py @@ -676,10 +676,12 @@ def close(self) -> None: except Exception: pass self._canvas_context = None - # Clean events. Should already have happened in loop, but the loop may not be running. - self._events.close() # Let the subclass clean up. - self._rc_close() + try: + self._rc_close() + finally: + # Clean events. Should already have happened in loop, but the loop may not be running. + self._events.close() def get_closed(self) -> bool: """Get whether the window is closed.""" diff --git a/rendercanvas/wx.py b/rendercanvas/wx.py index 2f10ac77..c2fe6e9c 100644 --- a/rendercanvas/wx.py +++ b/rendercanvas/wx.py @@ -247,7 +247,8 @@ def on_paint(self, event): if not self._draw_lock: self._time_to_paint() if self._last_image is not None: - dc.DrawBitmap(self._last_image, 0, 0, False) + # dc.DrawBitmap(self._last_image, 0, 0, False) + dc.drawRectangle(0, 0, 10, 10) else: event.Skip() del dc @@ -359,9 +360,9 @@ def _rc_close(self): except RuntimeError: return # native C++ object is already deleted if isinstance(parent, WxRenderCanvas): - parent.Hide() + parent.Close() else: - self.Hide() + self.Close() def _rc_get_closed(self): return self._is_closed @@ -383,7 +384,7 @@ def _rc_set_cursor(self, cursor): # %% Turn wx events into rendercanvas events def _on_resize(self, event: wx.SizeEvent): - self._draw_lock = True + # self._draw_lock = True self._resize_timer.Start(100, wx.TIMER_ONE_SHOT) lsize = float(self.Size[0]), float(self.Size[1])