diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp index 581b31ea0..827a45bff 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp @@ -121,6 +121,10 @@ void VisualDatabaseDisplayColorFilterWidget::retranslateUi() modeComboBox->setItemData(3, tr("Cards being exactly of the selected colors"), Qt::ToolTipRole); modeComboBox->setItemData(4, tr("Cards whose color identity fits within the selected colors"), Qt::ToolTipRole); + if (currentMode == FilterMode::Custom) { + addCustomFilterModeItem(); + } + modeComboBox->setToolTip(tr("How selected and unselected colors are combined in the filter")); modeComboBox->setAccessibleName(tr("Color Filter Mode")); @@ -135,12 +139,26 @@ void VisualDatabaseDisplayColorFilterWidget::retranslateUi() void VisualDatabaseDisplayColorFilterWidget::setFilterMode(FilterMode filterMode) { - const int index = modeComboBox->findData(QVariant::fromValue(filterMode)); + int index = modeComboBox->findData(QVariant::fromValue(filterMode)); + + if (index < 0 && filterMode == FilterMode::Custom) { + index = modeComboBox->count(); + addCustomFilterModeItem(); + } + if (index >= 0) { modeComboBox->setCurrentIndex(index); } } +void VisualDatabaseDisplayColorFilterWidget::addCustomFilterModeItem() +{ + int customIndex = modeComboBox->count(); + modeComboBox->addItem(tr("Custom"), QVariant::fromValue(FilterMode::Custom)); + modeComboBox->setItemData(customIndex, tr("Cards matching an unknown combination of color filters"), + Qt::ToolTipRole); +} + void VisualDatabaseDisplayColorFilterWidget::handleColorToggled(QChar color, bool active) { if (active) { @@ -277,9 +295,7 @@ void VisualDatabaseDisplayColorFilterWidget::syncWithFilterModel() if (currentMode == FilterMode::Custom) { if (customIndex < 0) { customIndex = modeComboBox->count(); - modeComboBox->addItem(tr("Custom"), QVariant::fromValue(FilterMode::Custom)); - modeComboBox->setItemData(customIndex, tr("Cards matching an unknown combination of color filters"), - Qt::ToolTipRole); + addCustomFilterModeItem(); } modeComboBox->setCurrentIndex(customIndex); } else { diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h index d65e5373d..d12a30081 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.h @@ -65,6 +65,7 @@ signals: void filterModeChanged(FilterMode filterMode); private slots: + void addCustomFilterModeItem(); void handleColorToggled(QChar color, bool active); void addFilter(QChar color); void removeFilter(QChar color);