From 6564cb8a736463e811eaf8eb39afa0434e3ad042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Mon, 21 Sep 2026 00:09:56 +0200 Subject: [PATCH] [CreateTokenDialog] Fetch cardsDisplay settings inside the apply lambda Avoid capturing the raw settings pointer in the lambda: resolve the card language and card search language from the settings cache at call time so the values are always current when the search language is re-applied. --- .../src/game_graphics/dialogs/dlg_create_token.cpp | 12 +++++++----- .../src/game_graphics/zones/view_zone_widget.cpp | 7 ++++--- .../deck_editor_database_display_widget.cpp | 12 +++++++----- .../visual_database_display_widget.cpp | 12 +++++++----- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/cockatrice/src/game_graphics/dialogs/dlg_create_token.cpp b/cockatrice/src/game_graphics/dialogs/dlg_create_token.cpp index 0c02a4462..6d8ad0534 100644 --- a/cockatrice/src/game_graphics/dialogs/dlg_create_token.cpp +++ b/cockatrice/src/game_graphics/dialogs/dlg_create_token.cpp @@ -90,14 +90,16 @@ DlgCreateToken::DlgCreateToken(const QStringList &_predefinedTokens, QWidget *pa cardDatabaseDisplayModel = new TokenDisplayModel(this); cardDatabaseDisplayModel->setSourceModel(cardDatabaseModel); - CardsDisplaySettings *cardsDisplay = &SettingsCache::instance().cardsDisplay(); - const auto applyCardSearchLanguage = [this, cardsDisplay]() { + const auto applyCardSearchLanguage = [this]() { + const CardsDisplaySettings &cardsDisplay = SettingsCache::instance().cardsDisplay(); cardDatabaseDisplayModel->setSearchLanguage(CardSearchLanguage{ - cardsDisplay->getCardLang(), static_cast(cardsDisplay->getCardSearchLanguage())}); + cardsDisplay.getCardLang(), static_cast(cardsDisplay.getCardSearchLanguage())}); }; applyCardSearchLanguage(); - connect(cardsDisplay, &CardsDisplaySettings::cardLangChanged, this, applyCardSearchLanguage); - connect(cardsDisplay, &CardsDisplaySettings::cardSearchLanguageChanged, this, applyCardSearchLanguage); + connect(&SettingsCache::instance().cardsDisplay(), &CardsDisplaySettings::cardLangChanged, this, + applyCardSearchLanguage); + connect(&SettingsCache::instance().cardsDisplay(), &CardsDisplaySettings::cardSearchLanguageChanged, this, + applyCardSearchLanguage); chooseTokenFromAllRadioButton = new QRadioButton(tr("Show &all tokens")); connect(chooseTokenFromAllRadioButton, &QRadioButton::toggled, this, &DlgCreateToken::actChooseTokenFromAll); diff --git a/cockatrice/src/game_graphics/zones/view_zone_widget.cpp b/cockatrice/src/game_graphics/zones/view_zone_widget.cpp index f659ec8ff..fa6733413 100644 --- a/cockatrice/src/game_graphics/zones/view_zone_widget.cpp +++ b/cockatrice/src/game_graphics/zones/view_zone_widget.cpp @@ -170,10 +170,11 @@ ZoneViewWidget::ZoneViewWidget(PlayerLogic *_player, connect(&searchEdit, &QLineEdit::textChanged, zone, &ZoneViewZone::setFilterString); - CardsDisplaySettings *cardsDisplay = &SettingsCache::instance().cardsDisplay(); const auto applyCardSearchLanguage = [this] { zone->setFilterString(searchEdit.text()); }; - connect(cardsDisplay, &CardsDisplaySettings::cardLangChanged, this, applyCardSearchLanguage); - connect(cardsDisplay, &CardsDisplaySettings::cardSearchLanguageChanged, this, applyCardSearchLanguage); + connect(&SettingsCache::instance().cardsDisplay(), &CardsDisplaySettings::cardLangChanged, this, + applyCardSearchLanguage); + connect(&SettingsCache::instance().cardsDisplay(), &CardsDisplaySettings::cardSearchLanguageChanged, this, + applyCardSearchLanguage); } setLayout(vbox); diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp index 81ae03451..a83e25f5f 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp @@ -42,14 +42,16 @@ DeckEditorDatabaseDisplayWidget::DeckEditorDatabaseDisplayWidget(QWidget *parent databaseDisplayModel->setSourceModel(databaseModel); databaseDisplayModel->setFilterKeyColumn(0); - CardsDisplaySettings *cardsDisplay = &SettingsCache::instance().cardsDisplay(); - const auto applyCardSearchLanguage = [this, cardsDisplay]() { + const auto applyCardSearchLanguage = [this]() { + const CardsDisplaySettings &cardsDisplay = SettingsCache::instance().cardsDisplay(); databaseDisplayModel->setSearchLanguage(CardSearchLanguage{ - cardsDisplay->getCardLang(), static_cast(cardsDisplay->getCardSearchLanguage())}); + cardsDisplay.getCardLang(), static_cast(cardsDisplay.getCardSearchLanguage())}); }; applyCardSearchLanguage(); - connect(cardsDisplay, &CardsDisplaySettings::cardLangChanged, this, applyCardSearchLanguage); - connect(cardsDisplay, &CardsDisplaySettings::cardSearchLanguageChanged, this, applyCardSearchLanguage); + connect(&SettingsCache::instance().cardsDisplay(), &CardsDisplaySettings::cardLangChanged, this, + applyCardSearchLanguage); + connect(&SettingsCache::instance().cardsDisplay(), &CardsDisplaySettings::cardSearchLanguageChanged, this, + applyCardSearchLanguage); databaseView = new CardDatabaseView(this, databaseDisplayModel); databaseView->setObjectName("databaseView"); diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp index 656639a3e..a20d56f63 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp @@ -41,14 +41,16 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent, databaseDisplayModel->setSourceModel(database_model); databaseDisplayModel->setFilterKeyColumn(0); - CardsDisplaySettings *cardsDisplay = &SettingsCache::instance().cardsDisplay(); - const auto applyCardSearchLanguage = [this, cardsDisplay]() { + const auto applyCardSearchLanguage = [this]() { + const CardsDisplaySettings &cardsDisplay = SettingsCache::instance().cardsDisplay(); databaseDisplayModel->setSearchLanguage(CardSearchLanguage{ - cardsDisplay->getCardLang(), static_cast(cardsDisplay->getCardSearchLanguage())}); + cardsDisplay.getCardLang(), static_cast(cardsDisplay.getCardSearchLanguage())}); }; applyCardSearchLanguage(); - connect(cardsDisplay, &CardsDisplaySettings::cardLangChanged, this, applyCardSearchLanguage); - connect(cardsDisplay, &CardsDisplaySettings::cardSearchLanguageChanged, this, applyCardSearchLanguage); + connect(&SettingsCache::instance().cardsDisplay(), &CardsDisplaySettings::cardLangChanged, this, + applyCardSearchLanguage); + connect(&SettingsCache::instance().cardsDisplay(), &CardsDisplaySettings::cardSearchLanguageChanged, this, + applyCardSearchLanguage); cards = new QList; connect(databaseDisplayModel, &CardDatabaseDisplayModel::modelDirty, this,