diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp index 27686312d..5f4d6f03e 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include DeckPreviewTagDialog::DeckPreviewTagDialog(const QStringList &knownTags, const QStringList &activeTags, QWidget *parent) @@ -56,9 +57,15 @@ DeckPreviewTagDialog::DeckPreviewTagDialog(const QStringList &knownTags, const Q newTagInput = new QLineEdit(this); addTagButton = new QPushButton(this); editButton = new QPushButton(this); - connect(editButton, &QPushButton::clicked, this, [=]() { - auto defaultTagsEditor = new DlgDefaultTagsEditor(nullptr); - defaultTagsEditor->exec(); + connect(editButton, &QPushButton::clicked, this, [this]() { + auto *editor = new DlgDefaultTagsEditor(this); + editor->setAttribute(Qt::WA_DeleteOnClose); + editor->setModal(true); + editor->show(); + QTimer::singleShot(0, editor, [editor]() { + editor->raise(); + editor->activateWindow(); + }); }); addTagLayout->addWidget(newTagInput); addTagLayout->addWidget(addTagButton); diff --git a/cockatrice/src/dialogs/dlg_default_tags_editor.cpp b/cockatrice/src/dialogs/dlg_default_tags_editor.cpp index b4e603693..fbd737d4a 100644 --- a/cockatrice/src/dialogs/dlg_default_tags_editor.cpp +++ b/cockatrice/src/dialogs/dlg_default_tags_editor.cpp @@ -7,12 +7,10 @@ DlgDefaultTagsEditor::DlgDefaultTagsEditor(QWidget *parent) : QDialog(parent) { - setWindowModality(Qt::WindowModal); // Steals focus from parent dialog - - auto *mainLayout = new QVBoxLayout(this); + mainLayout = new QVBoxLayout(this); // Input field + Add button (horizontal layout) - auto *inputLayout = new QHBoxLayout(); + inputLayout = new QHBoxLayout(); inputField = new QLineEdit(this); addButton = new QPushButton(this); inputLayout->addWidget(inputField); @@ -26,7 +24,7 @@ DlgDefaultTagsEditor::DlgDefaultTagsEditor(QWidget *parent) : QDialog(parent) mainLayout->addWidget(listWidget); // Button layout (Confirm and Cancel) - QHBoxLayout *buttonLayout = new QHBoxLayout(); + buttonLayout = new QHBoxLayout(); confirmButton = new QPushButton(this); cancelButton = new QPushButton(this); buttonLayout->addWidget(confirmButton); @@ -57,28 +55,30 @@ void DlgDefaultTagsEditor::loadStringList() listWidget->clear(); QStringList tags = SettingsCache::instance().getVisualDeckStorageDefaultTagsList(); for (const QString &tag : tags) { - auto *item = new QListWidgetItem(listWidget); + auto *item = new QListWidgetItem(); // Create item but don't insert yet + QWidget *widget = new QWidget(this); QHBoxLayout *layout = new QHBoxLayout(widget); - layout->setContentsMargins(0, 0, 0, 0); + layout->setContentsMargins(2, 2, 2, 2); + layout->setSpacing(5); - // Editable tag label QLineEdit *lineEdit = new QLineEdit(tag, this); lineEdit->setFrame(false); - lineEdit->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + lineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); layout->addWidget(lineEdit); - // Delete button QPushButton *deleteButton = new QPushButton(tr("✖"), this); - deleteButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - deleteButton->setFixedWidth(25); - layout->addSpacing(5); // Adds spacing before the delete button + deleteButton->setFixedSize(25, 25); layout->addWidget(deleteButton); widget->setLayout(layout); + + // Set item height explicitly to match the widget (widgets get squished without it) + item->setSizeHint(widget->sizeHint()); + + listWidget->addItem(item); listWidget->setItemWidget(item, widget); - // Delete button signal connect(deleteButton, &QPushButton::clicked, this, [this, item]() { deleteItem(item); }); } } diff --git a/cockatrice/src/dialogs/dlg_default_tags_editor.h b/cockatrice/src/dialogs/dlg_default_tags_editor.h index ef154efd7..8dd58e018 100644 --- a/cockatrice/src/dialogs/dlg_default_tags_editor.h +++ b/cockatrice/src/dialogs/dlg_default_tags_editor.h @@ -5,6 +5,7 @@ #include #include #include +#include class DlgDefaultTagsEditor : public QDialog { @@ -19,7 +20,10 @@ private slots: void confirmChanges(); private: + QVBoxLayout *mainLayout; + QHBoxLayout *inputLayout; QListWidget *listWidget; + QHBoxLayout *buttonLayout; QLineEdit *inputField; QPushButton *addButton; QPushButton *confirmButton;