Address printing selector review feedback

Hold the deck editor printing-selector host by value, since its deck editor is known at construction. Emit printingSelected for every left-click pick instead of gating it on selection-only mode; consumers that do not want picks simply do not connect.
This commit is contained in:
Lukas Brübach 2026-11-10 09:45:01 +01:00
parent f372fdda42
commit 177536b07a
4 changed files with 8 additions and 12 deletions

View file

@ -14,7 +14,7 @@
#include <qnamespace.h> #include <qnamespace.h>
DeckEditorPrintingSelectorDockWidget::DeckEditorPrintingSelectorDockWidget(AbstractTabDeckEditor *parent) DeckEditorPrintingSelectorDockWidget::DeckEditorPrintingSelectorDockWidget(AbstractTabDeckEditor *parent)
: QDockWidget(parent), deckEditor(parent) : QDockWidget(parent), deckEditor(parent), printingSelectorHost(parent)
{ {
setObjectName("printingSelectorDock"); setObjectName("printingSelectorDock");
@ -33,12 +33,9 @@ DeckEditorPrintingSelectorDockWidget::DeckEditorPrintingSelectorDockWidget(Abstr
retranslateUi(); retranslateUi();
} }
DeckEditorPrintingSelectorDockWidget::~DeckEditorPrintingSelectorDockWidget() = default;
void DeckEditorPrintingSelectorDockWidget::createPrintingSelectorDock() void DeckEditorPrintingSelectorDockWidget::createPrintingSelectorDock()
{ {
printingSelectorHost = std::make_unique<DeckEditorPrintingSelectorHost>(deckEditor); printingSelector = new PrintingSelector(this, &printingSelectorHost);
printingSelector = new PrintingSelector(this, printingSelectorHost.get());
printingSelector->setObjectName("printingSelector"); printingSelector->setObjectName("printingSelector");
auto *printingSelectorFrame = new QVBoxLayout; auto *printingSelectorFrame = new QVBoxLayout;
printingSelectorFrame->setObjectName("printingSelectorFrame"); printingSelectorFrame->setObjectName("printingSelectorFrame");

View file

@ -7,11 +7,11 @@
#ifndef DECK_EDITOR_PRINTING_SELECTOR_DOCK_WIDGET_H #ifndef DECK_EDITOR_PRINTING_SELECTOR_DOCK_WIDGET_H
#define DECK_EDITOR_PRINTING_SELECTOR_DOCK_WIDGET_H #define DECK_EDITOR_PRINTING_SELECTOR_DOCK_WIDGET_H
#include "deck_editor_printing_selector_host.h"
#include <QDockWidget> #include <QDockWidget>
#include <memory>
#include <qtmetamacros.h> #include <qtmetamacros.h>
class DeckEditorPrintingSelectorHost;
class PrintingDisabledInfoWidget; class PrintingDisabledInfoWidget;
class AbstractTabDeckEditor; class AbstractTabDeckEditor;
class PrintingSelector; class PrintingSelector;
@ -22,7 +22,6 @@ class DeckEditorPrintingSelectorDockWidget : public QDockWidget
Q_OBJECT Q_OBJECT
public: public:
explicit DeckEditorPrintingSelectorDockWidget(AbstractTabDeckEditor *parent); explicit DeckEditorPrintingSelectorDockWidget(AbstractTabDeckEditor *parent);
~DeckEditorPrintingSelectorDockWidget() override;
void createPrintingSelectorDock(); void createPrintingSelectorDock();
void retranslateUi(); void retranslateUi();
@ -30,7 +29,7 @@ public:
private: private:
AbstractTabDeckEditor *deckEditor; AbstractTabDeckEditor *deckEditor;
std::unique_ptr<DeckEditorPrintingSelectorHost> printingSelectorHost; DeckEditorPrintingSelectorHost printingSelectorHost;
QWidget *printingSelectorDockContents; QWidget *printingSelectorDockContents;
PrintingDisabledInfoWidget *printingDisabledInfoWidget; PrintingDisabledInfoWidget *printingDisabledInfoWidget;

View file

@ -85,7 +85,7 @@ signals:
void cardAmountsChanged(const QMap<QString, ZoneCounts> &uuidToAmounts); void cardAmountsChanged(const QMap<QString, ZoneCounts> &uuidToAmounts);
/** /**
* A printing was picked while the selector runs in selection-only mode. * A printing was picked in the selector.
* @param card The picked card and printing. * @param card The picked card and printing.
*/ */
void printingSelected(const ExactCard &card); void printingSelected(const ExactCard &card);

View file

@ -117,10 +117,10 @@ PrintingSelectorCardOverlayWidget::PrintingSelectorCardOverlayWidget(QWidget *pa
cardInfoPicture->setCard(_rootCard); cardInfoPicture->setCard(_rootCard);
mainLayout->addWidget(cardInfoPicture); mainLayout->addWidget(cardInfoPicture);
// In a selection-only host a click picks this printing instead of changing a deck. // A left click reports the printing; consumers that only want a pick connect to the signal.
connect(cardInfoPicture, &CardInfoPictureWidget::cardClicked, this, connect(cardInfoPicture, &CardInfoPictureWidget::cardClicked, this,
[this](QMouseEvent *event, const ExactCard &card) { [this](QMouseEvent *event, const ExactCard &card) {
if (host->isSelectionOnly() && event->button() == Qt::LeftButton) { if (event->button() == Qt::LeftButton) {
emit printingSelected(card); emit printingSelected(card);
} }
}); });