diff --git a/cockatrice/resources/config/qtlogging.ini b/cockatrice/resources/config/qtlogging.ini index a9f8dd893..33ce214d5 100644 --- a/cockatrice/resources/config/qtlogging.ini +++ b/cockatrice/resources/config/qtlogging.ini @@ -51,6 +51,8 @@ #flow_widget = false #flow_widget.size = false +# card_info_picture_widget = false + # pixel_map_generator = false # filter_string = false diff --git a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp index 546568a73..f4f699171 100644 --- a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp +++ b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.cpp @@ -312,11 +312,26 @@ QMenu *CardInfoPictureWidget::createViewRelatedCardsMenu() return viewRelatedCards; } +/** + * Finds the single instance of the MainWindow in this application. + */ +static MainWindow *findMainWindow() +{ + for (auto widget : QApplication::topLevelWidgets()) { + if (auto mainWindow = qobject_cast(widget)) { + return mainWindow; + } + } + // This code should be unreachable + qCritical() << "Could not find MainWindow in QApplication::topLevelWidgets"; + return nullptr; +} + QMenu *CardInfoPictureWidget::createAddToOpenDeckMenu() { auto addToOpenDeckMenu = new QMenu(tr("Add card to deck")); - auto *mainWindow = qobject_cast(window()); + auto mainWindow = findMainWindow(); QList deckEditorTabs = mainWindow->getTabSupervisor()->getDeckEditorTabs(); if (deckEditorTabs.isEmpty()) { diff --git a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h index 5f6500d92..a74028a7f 100644 --- a/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h +++ b/cockatrice/src/client/ui/widgets/cards/card_info_picture_widget.h @@ -7,6 +7,8 @@ #include #include +inline Q_LOGGING_CATEGORY(CardInfoPictureWidgetLog, "card_info_picture_widget"); + class AbstractCardItem; class QMenu;