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

View file

@ -97,6 +97,7 @@ private:
* player->getCounters().
*/
QList<AbstractPlayerComponent *> managedComponents;
CardMenu *cardMenu = nullptr;
bool shortcutsActive = false;
/** @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) {
aCardMenu->setMenu(menu);
} else {
aCardMenu->setMenu(new QMenu);
} else if (aCardMenu->menu()) {
aCardMenu->menu()->clear();
}
}