mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-13 05:20:00 -08:00
Parent card menu submenus to the menu that owns them
QMenu::addMenu(QMenu *) does not take ownership of the submenu, and these submenus were created without a parent. Since CardMenu is rebuilt from scratch on every right-click, each rebuild leaked the MoveMenu, PtMenu, card counters and related-cards submenus. Pass the owning CardMenu as the QWidget parent so Qt's parent-child mechanism frees them with it.
This commit is contained in:
parent
daa8671b4d
commit
7b22533646
5 changed files with 12 additions and 12 deletions
|
|
@ -123,7 +123,7 @@ CardMenu::CardMenu(PlayerGraphicsItem *_player, CardItem *_card, bool _shortcuts
|
||||||
|
|
||||||
aRevealToAll = new QAction(this);
|
aRevealToAll = new QAction(this);
|
||||||
|
|
||||||
mCardCounters = new QMenu;
|
mCardCounters = new QMenu(this);
|
||||||
|
|
||||||
// Card counters
|
// Card counters
|
||||||
for (int i = 0; i < 6; ++i) {
|
for (int i = 0; i < 6; ++i) {
|
||||||
|
|
@ -225,7 +225,7 @@ void CardMenu::createTableMenu(bool canModifyCard)
|
||||||
}
|
}
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aClone);
|
addAction(aClone);
|
||||||
addMenu(new MoveMenu(player));
|
addMenu(new MoveMenu(player, this));
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aAttach);
|
addAction(aAttach);
|
||||||
if (card->getAttachedTo()) {
|
if (card->getAttachedTo()) {
|
||||||
|
|
@ -233,7 +233,7 @@ void CardMenu::createTableMenu(bool canModifyCard)
|
||||||
}
|
}
|
||||||
addAction(aDrawArrow);
|
addAction(aDrawArrow);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addMenu(new PtMenu(player));
|
addMenu(new PtMenu(player, this));
|
||||||
addAction(aSetAnnotation);
|
addAction(aSetAnnotation);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aReduceLifeByPower);
|
addAction(aReduceLifeByPower);
|
||||||
|
|
@ -275,7 +275,7 @@ void CardMenu::createStackMenu(bool canModifyCard)
|
||||||
addAction(aPlayFacedown);
|
addAction(aPlayFacedown);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aClone);
|
addAction(aClone);
|
||||||
addMenu(new MoveMenu(player));
|
addMenu(new MoveMenu(player, this));
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aAttach);
|
addAction(aAttach);
|
||||||
addAction(aDrawArrow);
|
addAction(aDrawArrow);
|
||||||
|
|
@ -304,7 +304,7 @@ void CardMenu::createGraveyardOrExileMenu(bool canModifyCard)
|
||||||
addAction(aPlayFacedown);
|
addAction(aPlayFacedown);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aClone);
|
addAction(aClone);
|
||||||
addMenu(new MoveMenu(player));
|
addMenu(new MoveMenu(player, this));
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aAttach);
|
addAction(aAttach);
|
||||||
addAction(aDrawArrow);
|
addAction(aDrawArrow);
|
||||||
|
|
@ -342,7 +342,7 @@ void CardMenu::createHandOrCustomZoneMenu(bool canModifyCard)
|
||||||
|
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addAction(aClone);
|
addAction(aClone);
|
||||||
addMenu(new MoveMenu(player));
|
addMenu(new MoveMenu(player, this));
|
||||||
|
|
||||||
// actions that are really wonky when done from deck or sideboard
|
// actions that are really wonky when done from deck or sideboard
|
||||||
if (card->getZone()->getName() == ZoneNames::HAND) {
|
if (card->getZone()->getName() == ZoneNames::HAND) {
|
||||||
|
|
@ -366,7 +366,7 @@ void CardMenu::createHandOrCustomZoneMenu(bool canModifyCard)
|
||||||
void CardMenu::createZonelessMenu(bool canModifyCard)
|
void CardMenu::createZonelessMenu(bool canModifyCard)
|
||||||
{
|
{
|
||||||
if (canModifyCard) {
|
if (canModifyCard) {
|
||||||
addMenu(new MoveMenu(player));
|
addMenu(new MoveMenu(player, this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -415,7 +415,7 @@ void CardMenu::addRelatedCardView()
|
||||||
}
|
}
|
||||||
|
|
||||||
addSeparator();
|
addSeparator();
|
||||||
auto viewRelatedCards = new QMenu(tr("View related cards"));
|
auto viewRelatedCards = new QMenu(tr("View related cards"), this);
|
||||||
addMenu(viewRelatedCards);
|
addMenu(viewRelatedCards);
|
||||||
for (const CardRelation *relatedCard : relatedCards) {
|
for (const CardRelation *relatedCard : relatedCards) {
|
||||||
QString relatedCardName = relatedCard->getName();
|
QString relatedCardName = relatedCard->getName();
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
#include <libcockatrice/game/player/player_actions.h>
|
#include <libcockatrice/game/player/player_actions.h>
|
||||||
#include <libcockatrice/game/player/player_logic.h>
|
#include <libcockatrice/game/player/player_logic.h>
|
||||||
|
|
||||||
MoveMenu::MoveMenu(PlayerGraphicsItem *player) : QMenu(tr("Move to"))
|
MoveMenu::MoveMenu(PlayerGraphicsItem *player, QWidget *parent) : QMenu(tr("Move to"), parent)
|
||||||
{
|
{
|
||||||
aMoveToTopLibrary = new QAction(this);
|
aMoveToTopLibrary = new QAction(this);
|
||||||
aMoveToTopLibrary->setData(cmMoveToTopLibrary);
|
aMoveToTopLibrary->setData(cmMoveToTopLibrary);
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ class MoveMenu : public QMenu
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit MoveMenu(PlayerGraphicsItem *player);
|
explicit MoveMenu(PlayerGraphicsItem *player, QWidget *parent);
|
||||||
void setShortcutsActive();
|
void setShortcutsActive();
|
||||||
void retranslateUi();
|
void retranslateUi();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
#include <libcockatrice/game/player/player_actions.h>
|
#include <libcockatrice/game/player/player_actions.h>
|
||||||
#include <libcockatrice/game/player/player_logic.h>
|
#include <libcockatrice/game/player/player_logic.h>
|
||||||
|
|
||||||
PtMenu::PtMenu(PlayerGraphicsItem *player) : QMenu(tr("Power / toughness"))
|
PtMenu::PtMenu(PlayerGraphicsItem *player, QWidget *parent) : QMenu(tr("Power / toughness"), parent)
|
||||||
{
|
{
|
||||||
PlayerActions *playerActions = player->getLogic()->getPlayerActions();
|
PlayerActions *playerActions = player->getLogic()->getPlayerActions();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ class PtMenu : public QMenu
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit PtMenu(PlayerGraphicsItem *player);
|
explicit PtMenu(PlayerGraphicsItem *player, QWidget *parent);
|
||||||
void retranslateUi();
|
void retranslateUi();
|
||||||
void setShortcutsActive();
|
void setShortcutsActive();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue