diff --git a/portprotonqt/system_overlay.py b/portprotonqt/system_overlay.py index 1e49be6..7e5c845 100644 --- a/portprotonqt/system_overlay.py +++ b/portprotonqt/system_overlay.py @@ -1,6 +1,5 @@ import subprocess -from PySide6.QtWidgets import QDialog, QVBoxLayout, QPushButton, QMessageBox -from PySide6.QtWidgets import QApplication +from PySide6.QtWidgets import QDialog, QVBoxLayout, QPushButton, QMessageBox, QApplication, QWidget from PySide6.QtCore import Qt from portprotonqt.logger import get_logger import os @@ -94,19 +93,21 @@ class SystemOverlay(QDialog): layout.addWidget(cancel_button) def showEvent(self, event): - """Переопределяем showEvent для центрирования окна и установки фокуса""" + """Override showEvent to center window and set focus.""" super().showEvent(event) - # Центрируем окно относительно родителя или экрана - if self.parent(): - self.move(self.parent().geometry().center() - self.rect().center()) + # Center window relative to parent or screen + parent = self.parent() + if isinstance(parent, QWidget) and parent.isVisible(): + self.move(parent.geometry().center() - self.rect().center()) else: screen_geometry = QApplication.primaryScreen().availableGeometry() self.move(screen_geometry.center() - self.rect().center()) - # Устанавливаем фокус на первый элемент - self.setFocus() - self.findChild(QPushButton).setFocus() + # Set focus on first button + button = self.findChild(QPushButton) + if button is not None: + button.setFocus() def reboot(self): try: