fix(main_window): prevent multiple AddGameDialog openings on gamepad

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
Boris Yumankulov 2025-06-05 19:37:57 +05:00
parent aabf8cb30f
commit bc91b03843
Signed by: Boria138
GPG Key ID: 14B4A5673FD39C76

View File

@ -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()