From 09b40bb9378afff4992dd93c8aa539a9164a994c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 14 Apr 2025 15:19:11 +0200 Subject: [PATCH] Update filterTree properly in case the filter is empty after modification. --- .../visual_database_display_color_filter_widget.cpp | 11 ++++++++--- ...isual_database_display_filter_save_load_widget.cpp | 2 +- ...isual_database_display_main_type_filter_widget.cpp | 4 +--- .../visual_database_display_name_filter_widget.cpp | 5 ++++- .../visual_database_display_set_filter_widget.cpp | 4 +--- ...visual_database_display_sub_type_filter_widget.cpp | 4 ++++ 6 files changed, 19 insertions(+), 11 deletions(-) diff --git a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp index f65b81655..e7dfd6f43 100644 --- a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp @@ -6,6 +6,12 @@ #include #include +/** + * This widget provides a graphical control element for the CardFilter::Attr::AttrColor filters applied to the filter + * model. + * @param parent The Qt Widget that this widget will parent to + * @param _filterModel The filter model that this widget will manipulate + */ VisualDatabaseDisplayColorFilterWidget::VisualDatabaseDisplayColorFilterWidget(QWidget *parent, FilterTreeModel *_filterModel) : QWidget(parent), filterModel(_filterModel), layout(new QHBoxLayout(this)) @@ -142,10 +148,9 @@ void VisualDatabaseDisplayColorFilterWidget::updateColorFilter() filterModel->blockSignals(false); filterModel->filterTree()->blockSignals(false); - if (filterModel->filterTree()->nodeAt(0)) { - filterModel->filterTree()->nodeAt(0)->nodeChanged(); - } + emit filterModel->filterTree()->changed(); emit filterModel->layoutChanged(); + blockSync = false; } diff --git a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_filter_save_load_widget.cpp b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_filter_save_load_widget.cpp index 7c1e4903f..1a099501e 100644 --- a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_filter_save_load_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_filter_save_load_widget.cpp @@ -108,7 +108,7 @@ void VisualDatabaseDisplayFilterSaveLoadWidget::loadFilter(const QString &filena filterModel->blockSignals(false); filterModel->filterTree()->blockSignals(false); - filterModel->filterTree()->nodeAt(0)->nodeChanged(); + emit filterModel->filterTree()->changed(); emit filterModel->layoutChanged(); } diff --git a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp index 6c43207d3..688f8f4d2 100644 --- a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp @@ -147,9 +147,7 @@ void VisualDatabaseDisplayMainTypeFilterWidget::updateMainTypeFilter() filterModel->blockSignals(false); filterModel->filterTree()->blockSignals(false); - if (filterModel->filterTree()->nodeAt(0)) { - filterModel->filterTree()->nodeAt(0)->nodeChanged(); - } + emit filterModel->filterTree()->changed(); emit filterModel->layoutChanged(); } diff --git a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp index f41375224..69e782b66 100644 --- a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp @@ -118,7 +118,10 @@ void VisualDatabaseDisplayNameFilterWidget::updateFilterModel() filterModel->blockSignals(false); filterModel->filterTree()->blockSignals(false); - filterModel->filterTree()->nodeAt(0)->nodeChanged(); + filterModel->blockSignals(false); + filterModel->filterTree()->blockSignals(false); + + emit filterModel->filterTree()->changed(); emit filterModel->layoutChanged(); } diff --git a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp index 4776ee82d..795c83d68 100644 --- a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp @@ -146,9 +146,7 @@ void VisualDatabaseDisplaySetFilterWidget::updateSetFilter() filterModel->blockSignals(false); filterModel->filterTree()->blockSignals(false); - if (filterModel->filterTree()->nodeAt(0)) { - filterModel->filterTree()->nodeAt(0)->nodeChanged(); - } + emit filterModel->filterTree()->changed(); emit filterModel->layoutChanged(); } diff --git a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp index fb14bbae9..4b8fc21d8 100644 --- a/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp @@ -1,6 +1,7 @@ #include "visual_database_display_sub_type_filter_widget.h" #include "../../../../game/cards/card_database_manager.h" +#include "../../../../game/filters/filter_tree.h" #include "../../../../game/filters/filter_tree_model.h" #include @@ -151,6 +152,9 @@ void VisualDatabaseDisplaySubTypeFilterWidget::updateSubTypeFilter() } } filterModel->blockSignals(false); + filterModel->filterTree()->blockSignals(false); + + emit filterModel->filterTree()->changed(); emit filterModel->layoutChanged(); }