diff --git a/cockatrice/src/client/ui/widgets/cards/card_size_widget.cpp b/cockatrice/src/client/ui/widgets/cards/card_size_widget.cpp index 4efb1f44d..d6ce09247 100644 --- a/cockatrice/src/client/ui/widgets/cards/card_size_widget.cpp +++ b/cockatrice/src/client/ui/widgets/cards/card_size_widget.cpp @@ -32,6 +32,17 @@ CardSizeWidget::CardSizeWidget(QWidget *parent, FlowWidget *flowWidget, int defa connect(cardSizeSlider, &QSlider::valueChanged, flowWidget, &FlowWidget::setMinimumSizeToMaxSizeHint); } + // Debounce setup + debounceTimer.setSingleShot(true); + connect(&debounceTimer, &QTimer::timeout, this, [this]() { + // Check the type of the parent widget + if (qobject_cast(parentWidget())) { + SettingsCache::instance().setPrintingSelectorCardSize(pendingValue); + } else if (qobject_cast(parentWidget())) { + SettingsCache::instance().setVisualDeckStorageCardSize(pendingValue); + } + }); + connect(cardSizeSlider, &QSlider::valueChanged, this, &CardSizeWidget::updateCardSizeSetting); } @@ -42,12 +53,8 @@ CardSizeWidget::CardSizeWidget(QWidget *parent, FlowWidget *flowWidget, int defa */ void CardSizeWidget::updateCardSizeSetting(int newValue) { - // Check the type of the parent widget - if ((parent = qobject_cast(parentWidget()))) { - SettingsCache::instance().setPrintingSelectorCardSize(newValue); - } else if ((parent = qobject_cast(parentWidget()))) { - SettingsCache::instance().setVisualDeckStorageCardSize(newValue); - } + pendingValue = newValue; + debounceTimer.start(300); // 300ms debounce time } /** diff --git a/cockatrice/src/client/ui/widgets/cards/card_size_widget.h b/cockatrice/src/client/ui/widgets/cards/card_size_widget.h index 4bc2afc98..d79359f23 100644 --- a/cockatrice/src/client/ui/widgets/cards/card_size_widget.h +++ b/cockatrice/src/client/ui/widgets/cards/card_size_widget.h @@ -6,6 +6,7 @@ #include #include #include +#include #include class CardSizeWidget : public QWidget @@ -15,15 +16,18 @@ class CardSizeWidget : public QWidget public: explicit CardSizeWidget(QWidget *parent, FlowWidget *flowWidget = nullptr, int defaultValue = 100); [[nodiscard]] QSlider *getSlider() const; - QWidget *parent; + public slots: void updateCardSizeSetting(int newValue); private: + QWidget *parent; FlowWidget *flowWidget; QHBoxLayout *cardSizeLayout; QLabel *cardSizeLabel; QSlider *cardSizeSlider; + QTimer debounceTimer; // Debounce timer + int pendingValue; // Stores the latest slider value }; #endif // CARD_SIZE_WIDGET_H