reduce redundant recursion in updateVisibility

findChildren is recursive by default, so only the top-level updateVisibility needs to loop through the found children
This commit is contained in:
RickyRister 2025-02-26 22:55:33 -08:00
parent 2da0deff62
commit 49c884f8da
2 changed files with 9 additions and 6 deletions

View file

@ -98,10 +98,11 @@ void VisualDeckStorageFolderDisplayWidget::createWidgetsForFiles()
} }
/** /**
* Updates the visibility of this folder and all its DeckPreviewWidgets, as well as all its subfolders and their * Updates the visibility of this folder and all its DeckPreviewWidgets
* DeckPreviewWidgets. *
* @param recursive Also update the visibility of all subfolders and their DeckPreviewWidgets.
*/ */
void VisualDeckStorageFolderDisplayWidget::updateVisibility() void VisualDeckStorageFolderDisplayWidget::updateVisibility(bool recursive)
{ {
bool atLeastOneWidgetVisible = checkVisibility(); bool atLeastOneWidgetVisible = checkVisibility();
if (atLeastOneWidgetVisible) { if (atLeastOneWidgetVisible) {
@ -109,8 +110,10 @@ void VisualDeckStorageFolderDisplayWidget::updateVisibility()
for (DeckPreviewWidget *display : flowWidget->findChildren<DeckPreviewWidget *>()) { for (DeckPreviewWidget *display : flowWidget->findChildren<DeckPreviewWidget *>()) {
display->updateVisibility(); display->updateVisibility();
} }
for (VisualDeckStorageFolderDisplayWidget *subFolder : findChildren<VisualDeckStorageFolderDisplayWidget *>()) { if (recursive) {
subFolder->updateVisibility(); for (auto *subFolder : findChildren<VisualDeckStorageFolderDisplayWidget *>()) {
subFolder->updateVisibility(false);
}
} }
} else { } else {
setVisible(false); setVisible(false);

View file

@ -28,7 +28,7 @@ public:
}; };
public slots: public slots:
void updateVisibility(); void updateVisibility(bool recursive = true);
bool checkVisibility(); bool checkVisibility();
void updateShowFolders(bool enabled); void updateShowFolders(bool enabled);