From c62fb85271b02adf01c65296f36687e549bde79a Mon Sep 17 00:00:00 2001 From: RickyRister Date: Mon, 29 Dec 2025 04:20:32 -0800 Subject: [PATCH] Hacky fix and debug messages --- .../deck_editor/deck_editor_deck_dock_widget.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp index 409d43e64..54f3b516e 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp @@ -571,7 +571,17 @@ void DeckEditorDeckDockWidget::changeSelectedCard(int changeBy) // Get the current index of the selected item auto deckViewCurrentIndex = deckView->currentIndex(); + // For some reason, if the deckModel is modified but the view is not manually reselected, + // currentIndex will return an index for the underlying deckModel instead of the proxy, + // which won't behave as expected when indexBelow/indexAbove crosses a header node. + if (deckViewCurrentIndex.model() == deckModel) { + deckViewCurrentIndex = proxy->mapFromSource(deckViewCurrentIndex); + } + auto nextIndex = deckViewCurrentIndex.siblingAtRow(deckViewCurrentIndex.row() + changeBy); + + qInfo() << "TRACK current:" << deckViewCurrentIndex << "next:" << nextIndex; + if (!nextIndex.isValid()) { nextIndex = deckViewCurrentIndex; @@ -583,6 +593,9 @@ void DeckEditorDeckDockWidget::changeSelectedCard(int changeBy) } else { nextIndex = deckView->indexAbove(nextIndex); } + + qInfo() << "TRACK nextIndex:" << nextIndex; + node = static_cast(nextIndex.internalPointer()); } while (node && node->isDeckHeader()); }