From b66bfd0fd5dd5a025ca11db35e8fce1201fb3d78 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 1 Aug 2025 02:47:59 -0400 Subject: [PATCH] Fix some issues with the new layout dialog --- CHANGELOG.md | 2 ++ include/ui/newlayoutform.h | 2 +- src/core/advancemapparser.cpp | 22 ++++++++++++++-------- src/ui/newlayoutdialog.cpp | 4 ++-- src/ui/newlayoutform.cpp | 5 ++--- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da29c074..b29c7d54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,8 @@ and this project somewhat adheres to [Semantic Versioning](https://semver.org/sp - Fix the shortcut for duplicating events working while on the Connections tab. - Fix Undo/Redo ignoring the automatic resizing that occurs if a layout/border was an unexpected size. - Fix the Region Map Editor incorrectly displaying whether a `MAPSEC` has region map data. +- Fix broken error message for the primary tileset on the new map/layout dialogs. +- Fix the dialog for duplicating/importing a map layout not allowing the tilesets to be changed. - Fix warning not appearing when the log file exceeds maximum size. - Fix possible lag while using the Tileset Editor's tile selector. - Fix unnecessary resources being used to watch files. diff --git a/include/ui/newlayoutform.h b/include/ui/newlayoutform.h index 3e77af18..99640444 100644 --- a/include/ui/newlayoutform.h +++ b/include/ui/newlayoutform.h @@ -24,7 +24,7 @@ public: void setSettings(const Layout::Settings &settings); Layout::Settings settings() const; - void setDisabled(bool disabled); + void setDimensionsDisabled(bool disabled); bool validate(); diff --git a/src/core/advancemapparser.cpp b/src/core/advancemapparser.cpp index 2e4ef7cd..04348e96 100644 --- a/src/core/advancemapparser.cpp +++ b/src/core/advancemapparser.cpp @@ -73,15 +73,21 @@ Layout *AdvanceMapParser::parseLayout(const QString &filepath, bool *error, cons const QList tilesets = project->tilesetLabelsOrdered; - if (mapPrimaryTilesetNum > tilesets.size()) - mapLayout->tileset_primary_label = project->getDefaultPrimaryTilesetLabel(); - else - mapLayout->tileset_primary_label = tilesets.at(mapPrimaryTilesetNum); + const QString defaultPrimaryTileset = project->getDefaultPrimaryTilesetLabel(); + QString primaryTilesetLabel = tilesets.value(mapPrimaryTilesetNum, defaultPrimaryTileset); + if (!project->primaryTilesetLabels.contains(primaryTilesetLabel)) { + // AdvanceMap's primary tileset value points to a secondary tileset. Ignore it. + primaryTilesetLabel = defaultPrimaryTileset; + } + const QString defaultSecondaryTileset = project->getDefaultSecondaryTilesetLabel(); + QString secondaryTilesetLabel = tilesets.value(mapSecondaryTilesetNum, defaultSecondaryTileset); + if (!project->secondaryTilesetLabels.contains(secondaryTilesetLabel)) { + // AdvanceMap's secondary tileset value points to a primary tileset. Ignore it. + secondaryTilesetLabel = defaultSecondaryTileset; + } - if (mapSecondaryTilesetNum > tilesets.size()) - mapLayout->tileset_secondary_label = project->getDefaultSecondaryTilesetLabel(); - else - mapLayout->tileset_secondary_label = tilesets.at(mapSecondaryTilesetNum); + mapLayout->tileset_primary_label = primaryTilesetLabel; + mapLayout->tileset_secondary_label = secondaryTilesetLabel; mapLayout->blockdata = blockdata; diff --git a/src/ui/newlayoutdialog.cpp b/src/ui/newlayoutdialog.cpp index 785f0389..98d16e62 100644 --- a/src/ui/newlayoutdialog.cpp +++ b/src/ui/newlayoutdialog.cpp @@ -62,10 +62,10 @@ void NewLayoutDialog::refresh() { if (this->layoutToCopy) { // If we're importing a layout then some settings will be enforced. ui->newLayoutForm->setSettings(this->layoutToCopy->settings()); - ui->newLayoutForm->setDisabled(true); + ui->newLayoutForm->setDimensionsDisabled(true); } else { ui->newLayoutForm->setSettings(*settings); - ui->newLayoutForm->setDisabled(false); + ui->newLayoutForm->setDimensionsDisabled(false); } ui->lineEdit_Name->setText(settings->name); diff --git a/src/ui/newlayoutform.cpp b/src/ui/newlayoutform.cpp index bc750ddd..11bdc0be 100644 --- a/src/ui/newlayoutform.cpp +++ b/src/ui/newlayoutform.cpp @@ -40,10 +40,9 @@ void NewLayoutForm::initUi(Project *project) { } } -void NewLayoutForm::setDisabled(bool disabled) { +void NewLayoutForm::setDimensionsDisabled(bool disabled) { ui->groupBox_MapDimensions->setDisabled(disabled); ui->groupBox_BorderDimensions->setDisabled(disabled); - ui->groupBox_Tilesets->setDisabled(disabled); } void NewLayoutForm::setSettings(const Layout::Settings &settings) { @@ -111,7 +110,7 @@ bool NewLayoutForm::validatePrimaryTileset(bool allowEmpty) { if (name.isEmpty()) { if (!allowEmpty) errorText = QString("The Primary Tileset cannot be empty."); } else if (ui->comboBox_PrimaryTileset->findText(name) < 0) { - errorText = QString("The Primary Tileset '%1' does not exist.").arg(ui->label_PrimaryTileset->text()).arg(name); + errorText = QString("The Primary Tileset '%1' does not exist.").arg(name); } bool isValid = errorText.isEmpty();