From a6f2e69e1abaa8f44419f2d8871bb555637b6897 Mon Sep 17 00:00:00 2001 From: Basile Clement Date: Fri, 21 Mar 2025 01:31:25 +0100 Subject: [PATCH] vds: Allow editing tags more than once (#5752) `refreshTags` is not connecting the signal to open the dialog to edit the tags, so tags can only be edited once for a given deck. Fix by only having the logic for creating the "Edit tags" button once and call it from `connectDeckList`. --- .../deck_preview_deck_tags_display_widget.cpp | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp index ae09305d1..97825ff21 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp @@ -14,7 +14,7 @@ #include DeckPreviewDeckTagsDisplayWidget::DeckPreviewDeckTagsDisplayWidget(QWidget *_parent, DeckList *_deckList) - : QWidget(_parent), deckList(_deckList) + : QWidget(_parent), deckList(nullptr) { setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); @@ -27,8 +27,8 @@ DeckPreviewDeckTagsDisplayWidget::DeckPreviewDeckTagsDisplayWidget(QWidget *_par flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded); - if (deckList) { - connectDeckList(deckList); + if (_deckList) { + connectDeckList(_deckList); } layout->addWidget(flowWidget); @@ -36,10 +36,20 @@ DeckPreviewDeckTagsDisplayWidget::DeckPreviewDeckTagsDisplayWidget(QWidget *_par void DeckPreviewDeckTagsDisplayWidget::connectDeckList(DeckList *_deckList) { - flowWidget->clearLayout(); + if (deckList) { + disconnect(deckList, &DeckList::deckTagsChanged, this, &DeckPreviewDeckTagsDisplayWidget::refreshTags); + } + deckList = _deckList; connect(deckList, &DeckList::deckTagsChanged, this, &DeckPreviewDeckTagsDisplayWidget::refreshTags); + refreshTags(); +} + +void DeckPreviewDeckTagsDisplayWidget::refreshTags() +{ + flowWidget->clearLayout(); + for (const QString &tag : deckList->getTags()) { flowWidget->addWidget(new DeckPreviewTagDisplayWidget(this, tag)); } @@ -50,16 +60,6 @@ void DeckPreviewDeckTagsDisplayWidget::connectDeckList(DeckList *_deckList) flowWidget->addWidget(tagAdditionWidget); } -void DeckPreviewDeckTagsDisplayWidget::refreshTags() -{ - flowWidget->clearLayout(); - QStringList tags = deckList->getTags(); - for (const QString &tag : tags) { - flowWidget->addWidget(new DeckPreviewTagDisplayWidget(this, tag)); - } - flowWidget->addWidget(new DeckPreviewTagAdditionWidget(this, tr("Edit tags ..."))); -} - /** * Gets the filepath of all files (no directories) in target directory and all subdirectories */ @@ -160,4 +160,4 @@ void DeckPreviewDeckTagsDisplayWidget::openTagEditDlg() } } } -} \ No newline at end of file +}