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
This commit is contained in:
RickyRister 2025-02-26 22:36:42 -08:00
parent e2990c9dff
commit 2da0deff62
2 changed files with 7 additions and 7 deletions

View file

@ -33,13 +33,6 @@ VisualDeckStorageFolderDisplayWidget::VisualDeckStorageFolderDisplayWidget(
flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAlwaysOff); flowWidget = new FlowWidget(this, Qt::Horizontal, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAlwaysOff);
containerLayout->addWidget(flowWidget); 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(); createWidgetsForFiles();
createWidgetsForFolders(); 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() void VisualDeckStorageFolderDisplayWidget::updateVisibility()
{ {
bool atLeastOneWidgetVisible = checkVisibility(); bool atLeastOneWidgetVisible = checkVisibility();

View file

@ -198,6 +198,7 @@ void VisualDeckStorageWidget::updateTagFilter()
{ {
if (folderWidget) { if (folderWidget) {
tagFilterWidget->filterDecksBySelectedTags(folderWidget->findChildren<DeckPreviewWidget *>()); tagFilterWidget->filterDecksBySelectedTags(folderWidget->findChildren<DeckPreviewWidget *>());
folderWidget->updateVisibility();
} }
emit tagFilterUpdated(); emit tagFilterUpdated();
} }
@ -206,6 +207,7 @@ void VisualDeckStorageWidget::updateColorFilter()
{ {
if (folderWidget) { if (folderWidget) {
deckPreviewColorIdentityFilterWidget->filterWidgets(folderWidget->findChildren<DeckPreviewWidget *>()); deckPreviewColorIdentityFilterWidget->filterWidgets(folderWidget->findChildren<DeckPreviewWidget *>());
folderWidget->updateVisibility();
} }
emit colorFilterUpdated(); emit colorFilterUpdated();
} }
@ -215,6 +217,7 @@ void VisualDeckStorageWidget::updateSearchFilter()
if (folderWidget) { if (folderWidget) {
searchWidget->filterWidgets(folderWidget->findChildren<DeckPreviewWidget *>(), searchWidget->getSearchText(), searchWidget->filterWidgets(folderWidget->findChildren<DeckPreviewWidget *>(), searchWidget->getSearchText(),
searchFolderNamesCheckBox->isChecked()); searchFolderNamesCheckBox->isChecked());
folderWidget->updateVisibility();
} }
emit searchFilterUpdated(); emit searchFilterUpdated();
} }