From bc91b038435f6959ad0cc5bf4f44c17fe9b3f0a7 Mon Sep 17 00:00:00 2001 From: Boris Yumankulov Date: Thu, 5 Jun 2025 19:37:57 +0500 Subject: [PATCH] fix(main_window): prevent multiple AddGameDialog openings on gamepad Signed-off-by: Boris Yumankulov --- portprotonqt/main_window.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/portprotonqt/main_window.py b/portprotonqt/main_window.py index ec24202..9634d2d 100644 --- a/portprotonqt/main_window.py +++ b/portprotonqt/main_window.py @@ -60,6 +60,7 @@ class MainWindow(QMainWindow): self.games_load_timer.setSingleShot(True) self.games_load_timer.timeout.connect(self.finalize_game_loading) self.games_loaded.connect(self.on_games_loaded) + self.current_add_game_dialog = None # Добавляем таймер для дебаунсинга сохранения настроек self.settingsDebounceTimer = QTimer(self) @@ -730,7 +731,14 @@ class MainWindow(QMainWindow): def openAddGameDialog(self, exe_path=None): """Открывает диалоговое окно 'Add Game' с текущей темой.""" + # Проверяем, открыт ли уже диалог + if self.current_add_game_dialog is not None and self.current_add_game_dialog.isVisible(): + self.current_add_game_dialog.activateWindow() # Активируем существующий диалог + self.current_add_game_dialog.raise_() # Поднимаем окно + return + dialog = AddGameDialog(self, self.theme) + self.current_add_game_dialog = dialog # Сохраняем ссылку на диалог # Предзаполняем путь к .exe при drag-and-drop if exe_path: @@ -738,6 +746,12 @@ class MainWindow(QMainWindow): dialog.nameEdit.setText(os.path.splitext(os.path.basename(exe_path))[0]) dialog.updatePreview() + # Обработчик закрытия диалога + def on_dialog_finished(): + self.current_add_game_dialog = None # Сбрасываем ссылку при закрытии + + dialog.finished.connect(on_dialog_finished) + if dialog.exec() == QDialog.DialogCode.Accepted: name = dialog.nameEdit.text().strip() exe_path = dialog.exeEdit.text().strip() @@ -774,7 +788,6 @@ class MainWindow(QMainWindow): self.games = self.loadGames() self.updateGameGrid() - def createAutoInstallTab(self): """Вкладка 'Auto Install'.""" self.autoInstallWidget = QWidget()