forked from Boria138/PortProtonQt
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			accc9b18b6
			...
			84d5e46a74
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 84d5e46a74 | |||
| 4bc764d568 | |||
| 9a18aa037e | |||
| ed62d2d1c4 | 
							
								
								
									
										17
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @@ -3,6 +3,23 @@ | ||||
| Все заметные изменения в этом проекте фиксируются в этом файле. | ||||
| Формат основан на [Keep a Changelog](https://keepachangelog.com/) и придерживается принципов [Semantic Versioning](https://semver.org/). | ||||
|  | ||||
| ## [Unreleased] | ||||
|  | ||||
| ### Added | ||||
| - В настройки добавлен пункт для выбора типа геймпада для подсказок по управлению | ||||
|  | ||||
| ### Changed | ||||
| - При завершении автоустановки приложение больше не перезапускается | ||||
|  | ||||
| ### Fixed | ||||
| - Исправлено наложение карточек при смене фильтра игр | ||||
|  | ||||
|  | ||||
| ### Contributors | ||||
| - @Vector_null | ||||
|  | ||||
| --- | ||||
|  | ||||
| ## [0.1.7] - 2025-10-12 | ||||
|  | ||||
| ### Added | ||||
|   | ||||
| @@ -56,16 +56,6 @@ class GameLibraryManager: | ||||
|         self.is_filtering = False | ||||
|         self.dirty = False | ||||
|  | ||||
|     def force_update_cards_library(self): | ||||
|         if self.gamesListWidget and self.gamesListLayout: | ||||
|             self.gamesListLayout.invalidate() | ||||
|             self.gamesListWidget.updateGeometry() | ||||
|             widget = self.gamesListWidget | ||||
|             QTimer.singleShot(0, lambda: ( | ||||
|                 widget.adjustSize(), | ||||
|                 widget.updateGeometry() | ||||
|             )) | ||||
|  | ||||
|     def create_games_library_widget(self): | ||||
|         """Creates the games library widget with search, grid, and slider.""" | ||||
|         self.gamesLibraryWidget = QWidget() | ||||
| @@ -227,6 +217,16 @@ class GameLibraryManager: | ||||
|         else: | ||||
|             self._update_game_grid_immediate() | ||||
|  | ||||
|     def force_update_cards_library(self): | ||||
|         if self.gamesListWidget and self.gamesListLayout: | ||||
|             self.gamesListLayout.invalidate() | ||||
|             self.gamesListWidget.updateGeometry() | ||||
|             widget = self.gamesListWidget | ||||
|             QTimer.singleShot(0, lambda: ( | ||||
|                 widget.adjustSize(), | ||||
|                 widget.updateGeometry() | ||||
|             )) | ||||
|  | ||||
|     def _update_game_grid_immediate(self): | ||||
|         """Updates the game grid with the provided or current game list.""" | ||||
|         if self.gamesListLayout is None or self.gamesListWidget is None: | ||||
|   | ||||
| @@ -100,7 +100,6 @@ class MainWindow(QMainWindow): | ||||
|         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.current_display_filter = read_display_filter() | ||||
|  | ||||
|         self.settingsDebounceTimer = QTimer(self) | ||||
|         self.settingsDebounceTimer.setSingleShot(True) | ||||
| @@ -517,12 +516,26 @@ class MainWindow(QMainWindow): | ||||
|             self.install_monitor_timer = None | ||||
|         self.progress_bar.setRange(0, 100) | ||||
|         self.progress_bar.setValue(100) | ||||
|  | ||||
|         if exit_code == 0: | ||||
|             self.update_status_message.emit(_("Installation completed successfully."), 5000) | ||||
|             QTimer.singleShot(500, lambda: self.restart_application()) | ||||
|  | ||||
|             desktop_dir = self.portproton_location or "" | ||||
|             new_desktops = [e.path for e in os.scandir(desktop_dir) if e.name.endswith(".desktop")] | ||||
|             if new_desktops: | ||||
|                 latest = max(new_desktops, key=os.path.getmtime) | ||||
|                 self._process_desktop_file_async( | ||||
|                     latest, | ||||
|                     lambda result: ( | ||||
|                         self.game_library_manager.add_game_incremental(result) | ||||
|                         if result else None | ||||
|                     ) | ||||
|                 ) | ||||
|  | ||||
|         else: | ||||
|             self.update_status_message.emit(_("Installation failed."), 5000) | ||||
|             QMessageBox.warning(self, _("Error"), f"Installation failed (code: {exit_code}).") | ||||
|  | ||||
|         self.progress_bar.setVisible(False) | ||||
|         self.current_install_script = None | ||||
|         if self.install_process: | ||||
| @@ -824,22 +837,23 @@ class MainWindow(QMainWindow): | ||||
|         if hasattr(self, "game_library_manager"): | ||||
|             mgr = self.game_library_manager | ||||
|             if mgr.gamesListWidget and mgr.gamesListLayout: | ||||
|                 layout = mgr.gamesListLayout | ||||
|                 widget = mgr.gamesListWidget | ||||
|                 games_layout = mgr.gamesListLayout | ||||
|                 games_widget = mgr.gamesListWidget | ||||
|                 QTimer.singleShot(0, lambda: ( | ||||
|                     layout.invalidate(), | ||||
|                     widget.adjustSize(), | ||||
|                     widget.updateGeometry() | ||||
|                     games_layout.invalidate(), | ||||
|                     games_widget.adjustSize(), | ||||
|                     games_widget.updateGeometry() | ||||
|                 )) | ||||
|         if hasattr(self, "autoInstallContainer") and hasattr(self, "autoInstallContainerLayout"): | ||||
|             layout = self.autoInstallContainerLayout | ||||
|             widget = self.autoInstallContainer | ||||
|             auto_layout = self.autoInstallContainerLayout | ||||
|             auto_widget = self.autoInstallContainer | ||||
|             QTimer.singleShot(0, lambda: ( | ||||
|                 layout.invalidate(), | ||||
|                 widget.adjustSize(), | ||||
|                 widget.updateGeometry() | ||||
|                 auto_layout.invalidate(), | ||||
|                 auto_widget.adjustSize(), | ||||
|                 auto_widget.updateGeometry() | ||||
|             )) | ||||
|  | ||||
|  | ||||
|     def openSystemOverlay(self): | ||||
|         """Opens the system overlay dialog.""" | ||||
|         overlay = SystemOverlay(self, self.theme) | ||||
| @@ -2012,12 +2026,9 @@ class MainWindow(QMainWindow): | ||||
|  | ||||
|     def applySettingsDelayed(self): | ||||
|         read_time_config() | ||||
|         self.games = [] | ||||
|         self.loadGames() | ||||
|         display_filter = read_display_filter() | ||||
|         reload_needed = display_filter != self.current_display_filter | ||||
|         if reload_needed: | ||||
|             self.games = [] | ||||
|             self.loadGames() | ||||
|         self.current_display_filter = display_filter | ||||
|         for card in self.game_library_manager.game_card_cache.values(): | ||||
|             card.update_badge_visibility(display_filter) | ||||
|  | ||||
| @@ -2032,8 +2043,6 @@ class MainWindow(QMainWindow): | ||||
|  | ||||
|         filter_idx = self.gamesDisplayCombo.currentIndex() | ||||
|         filter_key = self.filter_keys[filter_idx] | ||||
|  | ||||
|         old_filter = self.current_display_filter | ||||
|         save_display_filter(filter_key) | ||||
|  | ||||
|         proxy_url = self.proxyUrlEdit.text().strip() | ||||
| @@ -2063,19 +2072,17 @@ class MainWindow(QMainWindow): | ||||
|                 self.input_manager.gamepad_type = GamepadType.UNKNOWN | ||||
|             self.updateControlHints() | ||||
|  | ||||
|         if filter_key != old_filter: | ||||
|             for card in self.game_library_manager.game_card_cache.values(): | ||||
|                 card.update_badge_visibility(filter_key) | ||||
|         for card in self.game_library_manager.game_card_cache.values(): | ||||
|             card.update_badge_visibility(filter_key) | ||||
|  | ||||
|             if self.currentDetailPage and self.current_exec_line: | ||||
|                 current_game = next((game for game in self.games if game[4] == self.current_exec_line), None) | ||||
|                 if current_game: | ||||
|                     self.stackedWidget.removeWidget(self.currentDetailPage) | ||||
|                     self.currentDetailPage.deleteLater() | ||||
|                     self.currentDetailPage = None | ||||
|                     self.openGameDetailPage(*current_game) | ||||
|         if self.currentDetailPage and self.current_exec_line: | ||||
|             current_game = next((game for game in self.games if game[4] == self.current_exec_line), None) | ||||
|             if current_game: | ||||
|                 self.stackedWidget.removeWidget(self.currentDetailPage) | ||||
|                 self.currentDetailPage.deleteLater() | ||||
|                 self.currentDetailPage = None | ||||
|                 self.openGameDetailPage(*current_game) | ||||
|  | ||||
|         self.current_display_filter = filter_key | ||||
|         self.settingsDebounceTimer.start() | ||||
|  | ||||
|         gamepad_connected = self.input_manager.find_gamepad() is not None | ||||
|   | ||||
		Reference in New Issue
	
	Block a user