diff --git a/picard/ui/mainwindow.py b/picard/ui/mainwindow.py index 4292ef9a1..b984953cb 100644 --- a/picard/ui/mainwindow.py +++ b/picard/ui/mainwindow.py @@ -177,6 +177,7 @@ class MainWindow(QtWidgets.QMainWindow, PreserveGeometry): self.logDialog = LogView(self) self.historyDialog = HistoryView(self) + self.optionsDialog = None bottomLayout = QtWidgets.QHBoxLayout() bottomLayout.setContentsMargins(0, 0, 0, 0) @@ -928,8 +929,15 @@ class MainWindow(QtWidgets.QMainWindow, PreserveGeometry): self.show_options("about") def show_options(self, page=None): - dialog = OptionsDialog(page, self) - dialog.exec_() + if not self.optionsDialog: + self.optionsDialog = OptionsDialog(page, self) + self.optionsDialog.finished.connect(self.on_options_closed) + self.optionsDialog.show() + self.optionsDialog.raise_() + self.optionsDialog.activateWindow() + + def on_options_closed(self): + self.optionsDialog = None def show_help(self): webbrowser2.goto('documentation') diff --git a/picard/ui/options/dialog.py b/picard/ui/options/dialog.py index b3d27360a..d3feb4046 100644 --- a/picard/ui/options/dialog.py +++ b/picard/ui/options/dialog.py @@ -86,6 +86,7 @@ class OptionsDialog(PicardDialog): def __init__(self, default_page=None, parent=None): super().__init__(parent) + self.setWindowModality(QtCore.Qt.ApplicationModal) from picard.ui.ui_options import Ui_Dialog self.ui = Ui_Dialog()