From 0deaa9d9b4ab4e1dc1fe0cb90285b5aea5204bbe Mon Sep 17 00:00:00 2001 From: RickyRister <42636155+RickyRister@users.noreply.github.com> Date: Fri, 9 Jan 2026 18:27:54 -0800 Subject: [PATCH] [DeckEditor] Don't change widget focus when adding card (#6503) --- .../widgets/deck_editor/deck_editor_deck_dock_widget.cpp | 7 +++++-- .../widgets/deck_editor/deck_editor_deck_dock_widget.h | 2 +- .../interface/widgets/deck_editor/deck_state_manager.cpp | 4 ++-- .../src/interface/widgets/deck_editor/deck_state_manager.h | 3 ++- .../widgets/printing_selector/card_amount_widget.cpp | 2 +- 5 files changed, 11 insertions(+), 7 deletions(-) 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 bf7688bb0..73bafe54f 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 @@ -459,12 +459,15 @@ void DeckEditorDeckDockWidget::syncBannerCardComboBoxSelectionWithDeck() } } -void DeckEditorDeckDockWidget::setSelectedIndex(const QModelIndex &newCardIndex) +void DeckEditorDeckDockWidget::setSelectedIndex(const QModelIndex &newCardIndex, bool preserveWidgetFocus) { deckView->clearSelection(); deckView->setCurrentIndex(newCardIndex); recursiveExpand(newCardIndex); - deckView->setFocus(Qt::FocusReason::MouseFocusReason); + + if (!preserveWidgetFocus) { + deckView->setFocus(Qt::FocusReason::MouseFocusReason); + } } void DeckEditorDeckDockWidget::syncDisplayWidgetsToModel() diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h index 39b298550..8dddf5882 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.h @@ -100,7 +100,7 @@ private slots: void writeComments(); void writeBannerCard(int); void applyActiveGroupCriteria(); - void setSelectedIndex(const QModelIndex &newCardIndex); + void setSelectedIndex(const QModelIndex &newCardIndex, bool preserveWidgetFocus); void updateHash(); void refreshShortcuts(); void updateShowBannerCardComboBox(bool visible); diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.cpp index d45416b17..412954bb8 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.cpp @@ -182,7 +182,7 @@ QModelIndex DeckStateManager::addCard(const ExactCard &card, const QString &zone QModelIndex idx = modifyDeck(reason, [&card, &zone](auto model) { return model->addCard(card, zone); }); if (idx.isValid()) { - emit focusIndexChanged(idx); + emit focusIndexChanged(idx, true); } return idx; @@ -208,7 +208,7 @@ QModelIndex DeckStateManager::decrementCard(const ExactCard &card, const QString } if (idx.isValid()) { - emit focusIndexChanged(idx); + emit focusIndexChanged(idx, true); } return idx; diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.h b/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.h index 0f3ba3255..4f1ec7e04 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.h +++ b/cockatrice/src/interface/widgets/deck_editor/deck_state_manager.h @@ -290,8 +290,9 @@ signals: /** * The selected card on any views connected to this deck should be changed to this index. * @param index The model index + * @param preserveWidgetFocus Whether to keep the widget focus unchanged */ - void focusIndexChanged(QModelIndex index); + void focusIndexChanged(QModelIndex index, bool preserveWidgetFocus); }; #endif // COCKATRICE_DECK_STATE_MANAGER_H \ No newline at end of file diff --git a/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.cpp b/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.cpp index 1c09a42c1..25222f437 100644 --- a/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.cpp +++ b/cockatrice/src/interface/widgets/printing_selector/card_amount_widget.cpp @@ -198,7 +198,7 @@ void CardAmountWidget::addPrinting(const QString &zone) }); if (newCardIndex.isValid()) { - emit deckStateManager->focusIndexChanged(newCardIndex); + emit deckStateManager->focusIndexChanged(newCardIndex, false); } }