diff --git a/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.cpp b/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.cpp index d339776df..dcefa4c46 100644 --- a/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.cpp +++ b/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -193,6 +194,15 @@ void TabDeckEditorVisual::processCardClickDatabaseDisplay(QMouseEvent *event, } } +bool TabDeckEditorVisual::actSaveDeckAs() +{ + // We have to disable the quick-add search bar or else it'll steal focus after dialog creation. + tabContainer->visualDeckView->searchBar->setEnabled(false); + auto result = AbstractTabDeckEditor::actSaveDeckAs(); + tabContainer->visualDeckView->searchBar->setEnabled(true); + return result; +} + void TabDeckEditorVisual::showPrintingSelector() { printingSelectorDockWidget->printingSelector->setCard(cardInfoDockWidget->cardInfo->getInfo(), DECK_ZONE_MAIN); diff --git a/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.h b/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.h index c8fb6625f..f4add316e 100644 --- a/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.h +++ b/cockatrice/src/client/tabs/visual_deck_editor/tab_deck_editor_visual.h @@ -47,6 +47,7 @@ public slots: void processMainboardCardClick(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance, QString zoneName); void processCardClickDatabaseDisplay(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance); + bool actSaveDeckAs() override; }; #endif diff --git a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp index f85c9a724..9033fa620 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp @@ -42,11 +42,18 @@ VisualDeckEditorWidget::VisualDeckEditorWidget(QWidget *parent, DeckListModel *_ searchBar = new QLineEdit(this); connect(searchBar, &QLineEdit::returnPressed, this, [=, this]() { + if (!searchBar->hasFocus()) + return; + CardInfoPtr card = CardDatabaseManager::getInstance()->getCard(searchBar->text()); if (card) { emit cardAdditionRequested(card); } }); + + setFocusProxy(searchBar); + setFocusPolicy(Qt::ClickFocus); + cardDatabaseModel = new CardDatabaseModel(CardDatabaseManager::getInstance(), false, this); cardDatabaseDisplayModel = new CardDatabaseDisplayModel(this); cardDatabaseDisplayModel->setSourceModel(cardDatabaseModel); diff --git a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.h index 68bb09707..5c91bbd19 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.h +++ b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.h @@ -28,6 +28,7 @@ public: void setDeckList(const DeckList &_deckListModel); + QLineEdit *searchBar; CardSizeWidget *cardSizeWidget; public slots: @@ -56,7 +57,6 @@ private: QVBoxLayout *mainLayout; QWidget *searchContainer; QHBoxLayout *searchLayout; - QLineEdit *searchBar; CardDatabaseModel *cardDatabaseModel; CardDatabaseDisplayModel *cardDatabaseDisplayModel; CardCompleterProxyModel *proxyModel;