summaryrefslogtreecommitdiff
path: root/quacker/movebox.cpp
diff options
context:
space:
mode:
authorJohn Fultz <jfultz@wolfram.com>2023-07-18 00:44:06 -0500
committerJohn Fultz <jfultz@wolfram.com>2023-07-18 00:44:06 -0500
commit53f394839396edd537785fc40db3090839dd7c04 (patch)
tree4198dc35fd903fbd537d798a5de06afb2e7b3253 /quacker/movebox.cpp
parenta68140dfb546b8a89c48bfe99d7b56d9c2908569 (diff)
Fix Qt6 MOC compilation on some platforms.
That was super painful. It seems that some of the Quackle types that have custom operator==() give fits to the MOC compiler when those types are used as arguments for slots and/or signals (or maybe it's only when they're connected in a certain way...frankly, I never did figure this out precisely to my satisfaction). The compilers provide very little help in resolving this problem. Once I understood the problem, VS22 was giving me just the tiniest morsel, enough that I could hunt down the offending slot/signal (it wasn't even giving me the name of the slot/signal...just the type it was trying to use). I've changed all offending functions to use const pointers to types instead of const references, and this makes Qt happy. I couldn't find any info on the web directly about this, but here's the closest I did find, which suggests that this is related to increased functionality in Qt6 regarding reflection. https://forum.qt.io/topic/141434/ This fixes my VC++22 x86-64 build. Hopefully it fixes all of the others, too.
Diffstat (limited to 'quacker/movebox.cpp')
-rw-r--r--quacker/movebox.cpp23
1 files changed, 13 insertions, 10 deletions
diff --git a/quacker/movebox.cpp b/quacker/movebox.cpp
index 38fcfe7..ae6c2f5 100644
--- a/quacker/movebox.cpp
+++ b/quacker/movebox.cpp
@@ -61,7 +61,8 @@ void MoveBox::moveActivated(QTreeWidgetItem *item)
{
if (item == 0)
{
- emit setCandidateMove(Quackle::Move::createNonmove(), nullptr);
+ Quackle::Move nonMove = Quackle::Move::createNonmove();
+ emit setCandidateMove(&nonMove, nullptr);
return;
}
@@ -73,7 +74,8 @@ void MoveBox::moveActivated(QTreeWidgetItem *item)
{
if (it.value() == item)
{
- emit setCandidateMove(it.key(), nullptr);
+ const auto& key = it.key();
+ emit setCandidateMove(&key, nullptr);
break;
}
}
@@ -106,7 +108,7 @@ void MoveBox::removeMove()
}
}
- emit removeCandidateMoves(selectedMoves);
+ emit removeCandidateMoves(&selectedMoves);
// TODO make this code work to select the next item
QTreeWidgetItem *prevLastSelection = m_moveMap.value(selectedMoves.back());
@@ -130,7 +132,8 @@ void MoveBox::removeMove()
{
if (mapIt.value() == nextSelection)
{
- emit setCandidateMove(mapIt.key(), nullptr);
+ const auto& key = mapIt.key();
+ emit setCandidateMove(&key, nullptr);
break;
}
}
@@ -232,9 +235,9 @@ void MoveBox::checkGeometry()
m_treeWidget->resizeColumnToContents(PlayColumn);
}
-void MoveBox::positionChanged(const Quackle::GamePosition &position)
+void MoveBox::positionChanged(const Quackle::GamePosition *position)
{
- if (m_rack.tiles() != position.currentPlayer().rack().tiles())
+ if (m_rack.tiles() != position->currentPlayer().rack().tiles())
{
for (auto& mapIt : m_moveMap)
delete mapIt;
@@ -242,13 +245,13 @@ void MoveBox::positionChanged(const Quackle::GamePosition &position)
m_moveMap.clear();
}
- m_rack = position.currentPlayer().rack();
- setMoves(position.moves(), position.moveMade());
+ m_rack = position->currentPlayer().rack();
+ setMoves(position->moves(), position->moveMade());
}
-void MoveBox::movesChanged(const Quackle::MoveList &moves)
+void MoveBox::movesChanged(const Quackle::MoveList *moves)
{
- setMoves(moves, m_previousSelection);
+ setMoves(*moves, m_previousSelection);
}
QTreeWidgetItem *MoveBox::createItem(const Quackle::Move &move)