From 630c71f1236f817fac66814bc3e5e226e3dadc61 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Sun, 25 Jan 2026 22:06:06 +0100 Subject: [PATCH] [VDE] Insert at correct index onDataChanged() instead of just appending. (#6556) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Took 25 minutes Took 3 seconds Co-authored-by: Lukas BrĂ¼bach --- .../card_group_display_widget.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.cpp b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.cpp index 7239a7c3f..fa304816f 100644 --- a/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.cpp +++ b/cockatrice/src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.cpp @@ -325,11 +325,22 @@ void CardGroupDisplayWidget::onDataChanged(const QModelIndex &topLeft, indexToWidgetMap.remove(persistent); } } else { - // Add new widgets int toAdd = newAmount - currentWidgetCount; + int insertBase = 0; + // Count widgets belonging to rows before this one + for (int r = 0; r < row; ++r) { + QModelIndex prevIdx = deckListModel->index(r, 0, trackedIndex); + QPersistentModelIndex prevPersistent(prevIdx); + + if (indexToWidgetMap.contains(prevPersistent)) { + insertBase += indexToWidgetMap.value(prevPersistent).size(); + } + } + + // Insert after existing copies of this card for (int i = 0; i < toAdd; ++i) { - addToLayout(constructWidgetForIndex(persistent)); + insertIntoLayout(constructWidgetForIndex(persistent), insertBase + currentWidgetCount + i); } }