diff --git a/cockatrice/src/messagelogwidget.cpp b/cockatrice/src/messagelogwidget.cpp
index 4ce4621d..d7935435 100644
--- a/cockatrice/src/messagelogwidget.cpp
+++ b/cockatrice/src/messagelogwidget.cpp
@@ -198,7 +198,7 @@ void MessageLogWidget::logMoveCard(Player *player, QString cardName, CardZone *s
else
cardStr = QString("%1").arg(sanitizeHtml(cardName));
- if ((startName == "table") && (targetName == "table")) {
+ if (startZone->getPlayer() != targetZone->getPlayer()) {
append(tr("%1 gives %2 control over %3.").arg(sanitizeHtml(player->getName())).arg(sanitizeHtml(targetZone->getPlayer()->getName())).arg(cardStr));
return;
}
diff --git a/common/server_player.cpp b/common/server_player.cpp
index a1092d39..7b1c233e 100644
--- a/common/server_player.cpp
+++ b/common/server_player.cpp
@@ -235,8 +235,8 @@ public:
ResponseCode Server_Player::moveCard(CommandContainer *cont, Server_CardZone *startzone, const QList &_cardIds, Server_CardZone *targetzone, int x, int y, bool faceDown, bool tapped)
{
- // Disallow controller change between different zones.
- if ((startzone->getName() != targetzone->getName()) && (startzone->getPlayer() != targetzone->getPlayer()))
+ // Disallow controller change to other zones than the table.
+ if (((targetzone->getType() != PublicZone) || !targetzone->hasCoords()) && (startzone->getPlayer() != targetzone->getPlayer()))
return RespContextError;
if (!targetzone->hasCoords() && (x == -1))