From 45fec7fc747b770d778f62d28c9f7c1b50453c82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Sun, 20 Sep 2026 19:14:25 +0200 Subject: [PATCH] [VDS] Address second round of review nits --- .../visual_deck_storage_tag_filter_widget.cpp | 18 +++++++++--------- .../visual_deck_storage_tag_filter_widget.h | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp index c7f1b9f13..6f954b01b 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp @@ -54,15 +54,12 @@ void VisualDeckStorageTagFilterWidget::refreshTags() } // Add chips for tags that are not shown yet. + QSet existingTags; + for (DeckPreviewTagDisplayWidget *tagWidget : chips) { + existingTags.insert(tagWidget->getTagName()); + } for (const QString &tag : allTags) { - bool tagExists = false; - for (DeckPreviewTagDisplayWidget *tagWidget : chips) { - if (tagWidget->getTagName() == tag) { - tagExists = true; - break; - } - } - if (!tagExists) { + if (!existingTags.contains(tag)) { auto *newTagWidget = new DeckPreviewTagDisplayWidget(this, tag); connect(newTagWidget, &DeckPreviewTagDisplayWidget::tagClicked, this, &VisualDeckStorageTagFilterWidget::filterChanged); @@ -75,7 +72,10 @@ void VisualDeckStorageTagFilterWidget::refreshTags() // FlowWidget inherits QLayout::removeWidget's linear scan, so rebuilding an unchanged // order would be quadratic plus a full relayout on every chip click and load batch. std::sort(chips.begin(), chips.end(), [](DeckPreviewTagDisplayWidget *a, DeckPreviewTagDisplayWidget *b) { - return a->getTagName().toLower() < b->getTagName().toLower(); + const QString aName = a->getTagName(); + const QString bName = b->getTagName(); + const int compared = aName.compare(bName, Qt::CaseInsensitive); + return compared != 0 ? compared < 0 : aName < bName; }); if (chips == currentChipOrder) { return; diff --git a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h index 8d89bed34..5e3cb398c 100644 --- a/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.h @@ -46,7 +46,7 @@ signals: * Emitted when a chip's selection or exclusion state changes. * * The chip only emits when its state actually changed, so this fires once per - * effective toggle rather than on every click." + * effective toggle rather than on every click. */ void filterChanged();