Skip to content
Snippets Groups Projects
Commit 8069c04f authored by Ian Bush's avatar Ian Bush
Browse files

Refs #22518 Wrap further methods in QAppThreadCalls

This avoids a crash on Windows when changing a figure name
parent fc7cb7c7
No related branches found
No related tags found
No related merge requests found
...@@ -81,13 +81,17 @@ class FigureManagerWorkbench(FigureManagerBase, QObject): ...@@ -81,13 +81,17 @@ class FigureManagerWorkbench(FigureManagerBase, QObject):
self._window_activated = QAppThreadCall(self._window_activated_orig) self._window_activated = QAppThreadCall(self._window_activated_orig)
self._widgetclosed_orig = self._widgetclosed self._widgetclosed_orig = self._widgetclosed
self._widgetclosed = QAppThreadCall(self._widgetclosed_orig) self._widgetclosed = QAppThreadCall(self._widgetclosed_orig)
self.set_window_title_orig = self.set_window_title
self.set_window_title = QAppThreadCall(self.set_window_title_orig)
self.fig_visibility_changed_orig = self.fig_visibility_changed
self.fig_visibility_changed = QAppThreadCall(self.fig_visibility_changed_orig)
self.canvas = canvas self.canvas = canvas
self.window = MainWindow() self.window = MainWindow()
self.window.activated.connect(self._window_activated) self.window.activated.connect(self._window_activated)
self.window.closing.connect(canvas.close_event) self.window.closing.connect(canvas.close_event)
self.window.closing.connect(self._widgetclosed) self.window.closing.connect(self._widgetclosed)
self.window.visibility_changed.connect(lambda plot_number=num: Gcf.figure_visibility_changed(plot_number)) self.window.visibility_changed.connect(self.fig_visibility_changed)
self.window.setWindowTitle("Figure %d" % num) self.window.setWindowTitle("Figure %d" % num)
self.canvas.figure.set_label("Figure %d" % num) self.canvas.figure.set_label("Figure %d" % num)
...@@ -232,6 +236,14 @@ class FigureManagerWorkbench(FigureManagerBase, QObject): ...@@ -232,6 +236,14 @@ class FigureManagerWorkbench(FigureManagerBase, QObject):
# to allow getting a handle as plt.figure('Figure Name') # to allow getting a handle as plt.figure('Figure Name')
self.canvas.figure.set_label(title) self.canvas.figure.set_label(title)
def fig_visibility_changed(self):
"""
Make a notification in the global figure manager that
plot visibility was changed. This method is added to this
class so that it can be wrapped in a QAppThreadCall.
"""
Gcf.figure_visibility_changed(self.num)
# ------------------------ Interaction events -------------------- # ------------------------ Interaction events --------------------
def on_button_press(self, event): def on_button_press(self, event):
if not event.dblclick: if not event.dblclick:
......
...@@ -122,6 +122,8 @@ class PlotSelectorView(QWidget): ...@@ -122,6 +122,8 @@ class PlotSelectorView(QWidget):
self.set_visibility_icon = QAppThreadCall(self.set_visibility_icon_orig) self.set_visibility_icon = QAppThreadCall(self.set_visibility_icon_orig)
self.set_last_active_values_orig = self.set_last_active_values self.set_last_active_values_orig = self.set_last_active_values
self.set_last_active_values = QAppThreadCall(self.set_last_active_values_orig) self.set_last_active_values = QAppThreadCall(self.set_last_active_values_orig)
self.sort_type_orig = self.sort_type
self.sort_type = QAppThreadCall(self.sort_type_orig)
# Connect presenter methods to things in the view # Connect presenter methods to things in the view
self.show_button.clicked.connect(self.presenter.show_multiple_selected) self.show_button.clicked.connect(self.presenter.show_multiple_selected)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment