Manage CardMenu lifecycle in PlayerMenu

This commit is contained in:
DawnFire42 2026-08-10 17:18:13 -04:00
parent 3e90748f73
commit 14f60ea309
No known key found for this signature in database
GPG key ID: 24BB855EE2911B33
3 changed files with 12 additions and 6 deletions

View file

@ -74,6 +74,11 @@ void PlayerMenu::setMenusForGraphicItems()
QMenu *PlayerMenu::updateCardMenu(const CardItem *card) QMenu *PlayerMenu::updateCardMenu(const CardItem *card)
{ {
if (cardMenu) {
cardMenu->deleteLater();
cardMenu = nullptr;
}
if (!card) { if (!card) {
emit cardMenuUpdated(nullptr); emit cardMenuUpdated(nullptr);
return nullptr; return nullptr;
@ -87,11 +92,11 @@ QMenu *PlayerMenu::updateCardMenu(const CardItem *card)
return nullptr; return nullptr;
} }
CardMenu *menu = new CardMenu(player, card, shortcutsActive); cardMenu = new CardMenu(player, card, shortcutsActive);
connect(menu, &CardMenu::cardInfoRequested, this, &PlayerMenu::cardInfoRequested); connect(cardMenu, &CardMenu::cardInfoRequested, this, &PlayerMenu::cardInfoRequested);
emit cardMenuUpdated(menu); emit cardMenuUpdated(cardMenu);
return menu; return cardMenu;
} }
void PlayerMenu::retranslateUi() void PlayerMenu::retranslateUi()

View file

@ -97,6 +97,7 @@ private:
* player->getCounters(). * player->getCounters().
*/ */
QList<AbstractPlayerComponent *> managedComponents; QList<AbstractPlayerComponent *> managedComponents;
CardMenu *cardMenu = nullptr;
bool shortcutsActive = false; bool shortcutsActive = false;
/** @brief Creates component, adds it as a submenu of playerMenu, and registers in managedComponents. */ /** @brief Creates component, adds it as a submenu of playerMenu, and registers in managedComponents. */

View file

@ -1026,8 +1026,8 @@ void TabGame::setCardMenu(CardMenu *menu)
if (menu) { if (menu) {
aCardMenu->setMenu(menu); aCardMenu->setMenu(menu);
} else { } else if (aCardMenu->menu()) {
aCardMenu->setMenu(new QMenu); aCardMenu->menu()->clear();
} }
} }