[games/chessament] src: Fix starting rank not updated when deleting a player

Manuel Alcaraz Zambrano <[email protected]> Tue, 4 Aug 2026 14:20:41 +0000 (UTC)
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit a84d0429b2b74ad41cfb1f199e6db2ccf0a50341 by Manuel Alcaraz Zambrano.
Committed on 04/08/2026 at 14:19.
Pushed by manuelal into branch 'master'.

Fix starting rank not updated when deleting a player

M  +2    -2    src/playersmodel.cpp
M  +7    -0    src/tournament/tournament.cpp

https://invent.kde.org/games/chessament/-/commit/a84d0429b2b74ad41cfb1f199e6db2ccf0a50341

diff --git a/src/playersmodel.cpp b/src/playersmodel.cpp
index e8e7df2..5822864 100644
--- a/src/playersmodel.cpp
+++ b/src/playersmodel.cpp
@@ -304,9 +304,9 @@ void PlayersModel::deletePlayer(const QModelIndex &index)
         return;
     }
 
-    beginRemoveRows({}, index.row(), index.row());
+    beginResetModel();
     m_players.erase(m_players.begin() + index.row());
-    endRemoveRows();
+    endResetModel();
 }
 
 void PlayersModel::updateRatings(int listId)
diff --git a/src/tournament/tournament.cpp b/src/tournament/tournament.cpp
index 128a361..8ee9c77 100644
--- a/src/tournament/tournament.cpp
+++ b/src/tournament/tournament.cpp
@@ -265,6 +265,7 @@ std::expected<void, QString> Tournament::addPlayer(std::unique_ptr<Player> playe
 std::expected<void, QString> Tournament::deletePlayer(int startingRank)
 {
     Q_ASSERT(m_currentRound == 0);
+    Q_ASSERT(startingRank >= 1);
 
     const auto &player = m_players.at(startingRank - 1);
 
@@ -282,6 +283,12 @@ std::expected<void, QString> Tournament::deletePlayer(int startingRank)
 
     m_players.erase(m_players.begin() + startingRank - 1);
 
+    for (int i = startingRank - 1; i < static_cast<int>(m_players.size()); ++i) {
+        const auto &player = m_players.at(i);
+        player->setStartingRank(i + 1);
+        savePlayer(player.get());
+    }
+
     Q_EMIT numberOfPlayersChanged();
     Q_EMIT numberOfRatedPlayersChanged();