From bcf319c0241580ffd2b2910614897cc8266570f5 Mon Sep 17 00:00:00 2001
From: Boris Yumankulov <boria138@altlinux.org>
Date: Sat, 7 Jun 2025 22:11:36 +0500
Subject: [PATCH] feat: optimize slider code

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
---
 portprotonqt/main_window.py | 26 +++++++-------------------
 1 file changed, 7 insertions(+), 19 deletions(-)

diff --git a/portprotonqt/main_window.py b/portprotonqt/main_window.py
index 77cb547..df5a9fa 100644
--- a/portprotonqt/main_window.py
+++ b/portprotonqt/main_window.py
@@ -539,6 +539,12 @@ class MainWindow(QMainWindow):
     def startSearchDebounce(self, text):
         self.searchDebounceTimer.start()
 
+    def on_slider_value_changed(self, value: int):
+            self.card_width = value
+            self.sizeSlider.setToolTip(f"{value} px")
+            save_card_size(value)
+            self.updateGameGrid()
+
     def filterGamesDelayed(self):
         """Filters games based on search text and updates the grid."""
         text = self.searchEdit.text().strip().lower()
@@ -579,33 +585,16 @@ class MainWindow(QMainWindow):
         self.sizeSlider.setFixedWidth(150)
         self.sizeSlider.setToolTip(f"{self.card_width} px")
         self.sizeSlider.setStyleSheet(self.theme.SLIDER_SIZE_STYLE)
+        self.sizeSlider.valueChanged.connect(self.on_slider_value_changed)
         sliderLayout.addWidget(self.sizeSlider)
         layout.addLayout(sliderLayout)
 
-        self.sliderDebounceTimer = QTimer(self)
-        self.sliderDebounceTimer.setSingleShot(True)
-        self.sliderDebounceTimer.setInterval(40)
-
-        def on_slider_value_changed():
-            self.setUpdatesEnabled(False)
-            self.card_width = self.sizeSlider.value()
-            self.sizeSlider.setToolTip(f"{self.card_width} px")
-            self.updateGameGrid()
-            self.setUpdatesEnabled(True)
-        self.sizeSlider.valueChanged.connect(lambda val: self.sliderDebounceTimer.start())
-        self.sliderDebounceTimer.timeout.connect(on_slider_value_changed)
-
         def calculate_card_width():
             available_width = scrollArea.width() - 20
             spacing = self.gamesListLayout._spacing
             target_cards_per_row = 8
             calculated_width = (available_width - spacing * (target_cards_per_row - 1)) // target_cards_per_row
             calculated_width = max(200, min(calculated_width, 250))
-            if not self.sizeSlider.value() == self.card_width:
-                self.card_width = calculated_width
-                self.sizeSlider.setValue(self.card_width)
-                self.sizeSlider.setToolTip(f"{self.card_width} px")
-                self.updateGameGrid()
 
         QTimer.singleShot(0, calculate_card_width)
 
@@ -621,7 +610,6 @@ class MainWindow(QMainWindow):
             self._last_width = self.width()
         if abs(self.width() - self._last_width) > 10:
             self._last_width = self.width()
-            self.sliderDebounceTimer.start()
 
     def loadVisibleImages(self):
         visible_region = self.gamesListWidget.visibleRegion()