You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implement rescaling timer in BaseSyncPlot: add methods to handle show and close events, ensuring proper rescaling behavior and preventing unnecessary calls when the widget is closing.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,6 +71,13 @@
71
71
72
72
🛠️ Bug fixes:
73
73
74
+
* Fixed `RuntimeError` in `SyncPlotWindow` and `SyncPlotDialog` when closing widgets quickly:
75
+
* Fixed "wrapped C/C++ object of type QwtScaleWidget has been deleted" error that occurred when widgets were closed before the deferred plot rescaling operation could complete
76
+
* Replaced `QTimer.singleShot()` with controllable `QTimer` instances that can be stopped on widget close
77
+
* Added `handle_show_event()` and `handle_close_event()` methods to `BaseSyncPlot` for proper timer lifecycle management
78
+
* Refactored `showEvent()` and `closeEvent()` in both `SyncPlotWindow` and `SyncPlotDialog` to eliminate code duplication
79
+
* Added early exit check in `rescale_plots()` to prevent execution if the timer has been stopped
80
+
* This fix ensures clean widget shutdown and prevents Qt from attempting to access deleted C++ objects
74
81
* Cross-section panels: Fixed autoscaling logic in `BaseCrossSectionPlot`
75
82
* Streamlined handling of `autoscale_mode` and `lockscales` options for consistent scaling behavior across all code paths
76
83
* The `update_plot()` method now delegates all scaling logic to `plot_axis_changed()` to avoid code duplication and ensure consistency
0 commit comments