From 49bd825196e45b735b961f10193b8960fffead84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Sun, 22 Dec 2024 16:24:48 +0100 Subject: [PATCH] Open Decks on double click, not single click. --- .../tab_deck_storage_visual.cpp | 2 +- .../cards/deck_preview_card_picture_widget.cpp | 18 +++++++++++++++++- .../cards/deck_preview_card_picture_widget.h | 5 +++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp b/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp index bad7402d1..712f921c3 100644 --- a/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp +++ b/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -110,7 +111,6 @@ QStringList TabDeckStorageVisual::getBannerCardsForDecks() void TabDeckStorageVisual::actOpenLocalDeck(QMouseEvent *event, DeckPreviewCardPictureWidget *instance) { - qDebug() << event; DeckLoader deckLoader; if (!deckLoader.loadFromFile(instance->filePath, DeckLoader::CockatriceFormat)) return; diff --git a/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.cpp b/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.cpp index 7038dbc44..8a2978a7f 100644 --- a/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.cpp +++ b/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.cpp @@ -1,6 +1,8 @@ #include "deck_preview_card_picture_widget.h" +#include #include +#include #include #include #include @@ -24,11 +26,25 @@ DeckPreviewCardPictureWidget::DeckPreviewCardPictureWidget(QWidget *parent, const Qt::Alignment alignment) : CardInfoPictureWithTextOverlayWidget(parent, hoverToZoomEnabled, textColor, outlineColor, fontSize, alignment) { + singleClickTimer = new QTimer(this); + singleClickTimer->setSingleShot(true); + connect(singleClickTimer, &QTimer::timeout, this, [this]() { qDebug() << "Clicked some stuff"; }); } void DeckPreviewCardPictureWidget::mousePressEvent(QMouseEvent *event) { - emit imageClicked(event, this); + if (event->button() == Qt::LeftButton) { + lastMouseEvent = event; + singleClickTimer->start(QApplication::doubleClickInterval()); + } +} + +void DeckPreviewCardPictureWidget::mouseDoubleClickEvent(QMouseEvent *event) +{ + if (event->button() == Qt::LeftButton) { + singleClickTimer->stop(); // Prevent single-click logic + emit imageClicked(lastMouseEvent, this); + } } void DeckPreviewCardPictureWidget::setFilePath(const QString &_filePath) diff --git a/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.h b/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.h index 86ab689f2..d249671be 100644 --- a/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.h +++ b/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.h @@ -27,8 +27,13 @@ signals: public slots: void setFilePath(const QString &filePath); +private: + QTimer *singleClickTimer; + QMouseEvent *lastMouseEvent = nullptr; // Store the last mouse event + protected: void mousePressEvent(QMouseEvent *event) override; + void mouseDoubleClickEvent(QMouseEvent *event) override; }; #endif // DECK_PREVIEW_CARD_PICTURE_WIDGET_H