From 2da0deff62ceb4d8c115c42a9923944536484af5 Mon Sep 17 00:00:00 2001 From: RickyRister Date: Wed, 26 Feb 2025 22:36:42 -0800 Subject: [PATCH] only trigger the top-level updateVisibility on filter update Every folder widget was connecting the filter update signals to their updateVisibility, but updateVisibility is already recursive. That means a bunch of redundant updateVisibility calls happen every time a filter update signal is emitted --- .../visual_deck_storage_folder_display_widget.cpp | 11 ++++------- .../visual_deck_storage_widget.cpp | 3 +++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp index 677abc678..e3054890b 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp @@ -33,13 +33,6 @@ VisualDeckStorageFolderDisplayWidget::VisualDeckStorageFolderDisplayWidget( flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAlwaysOff); containerLayout->addWidget(flowWidget); - connect(visualDeckStorageWidget, &VisualDeckStorageWidget::tagFilterUpdated, this, - &VisualDeckStorageFolderDisplayWidget::updateVisibility); - connect(visualDeckStorageWidget, &VisualDeckStorageWidget::colorFilterUpdated, this, - &VisualDeckStorageFolderDisplayWidget::updateVisibility); - connect(visualDeckStorageWidget, &VisualDeckStorageWidget::searchFilterUpdated, this, - &VisualDeckStorageFolderDisplayWidget::updateVisibility); - createWidgetsForFiles(); createWidgetsForFolders(); @@ -104,6 +97,10 @@ void VisualDeckStorageFolderDisplayWidget::createWidgetsForFiles() } } +/** + * Updates the visibility of this folder and all its DeckPreviewWidgets, as well as all its subfolders and their + * DeckPreviewWidgets. + */ void VisualDeckStorageFolderDisplayWidget::updateVisibility() { bool atLeastOneWidgetVisible = checkVisibility(); diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp index 789061999..d05e43714 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp @@ -198,6 +198,7 @@ void VisualDeckStorageWidget::updateTagFilter() { if (folderWidget) { tagFilterWidget->filterDecksBySelectedTags(folderWidget->findChildren()); + folderWidget->updateVisibility(); } emit tagFilterUpdated(); } @@ -206,6 +207,7 @@ void VisualDeckStorageWidget::updateColorFilter() { if (folderWidget) { deckPreviewColorIdentityFilterWidget->filterWidgets(folderWidget->findChildren()); + folderWidget->updateVisibility(); } emit colorFilterUpdated(); } @@ -215,6 +217,7 @@ void VisualDeckStorageWidget::updateSearchFilter() if (folderWidget) { searchWidget->filterWidgets(folderWidget->findChildren(), searchWidget->getSearchText(), searchFolderNamesCheckBox->isChecked()); + folderWidget->updateVisibility(); } emit searchFilterUpdated(); }