diff --git a/include/mainwindow.h b/include/mainwindow.h index 60871d4d..2823ccff 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -100,7 +100,6 @@ private slots: void onAddNewMapToGroupClick(QAction* triggeredAction); void onTilesetChanged(QString); void currentMetatilesSelectionChanged(); - void onTilesetEditorClosed(); void on_action_Export_Map_Image_triggered(); diff --git a/include/ui/tileseteditor.h b/include/ui/tileseteditor.h index 776f78cc..276dce47 100644 --- a/include/ui/tileseteditor.h +++ b/include/ui/tileseteditor.h @@ -107,7 +107,6 @@ private: signals: void tilesetsSaved(QString, QString); - void closed(); }; #endif // TILESETEDITOR_H diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 5c2e7fab..29b1b562 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1735,7 +1735,8 @@ void MainWindow::on_actionTileset_Editor_triggered() if (!this->tilesetEditor) { this->tilesetEditor = new TilesetEditor(this->editor->project, this->editor->map->layout->tileset_primary_label, this->editor->map->layout->tileset_secondary_label, this); connect(this->tilesetEditor, SIGNAL(tilesetsSaved(QString, QString)), this, SLOT(onTilesetsSaved(QString, QString))); - connect(this->tilesetEditor, SIGNAL(closed()), this, SLOT(onTilesetEditorClosed())); + connect(this->tilesetEditor, &QObject::destroyed, [=](QObject *) { this->tilesetEditor = nullptr; }); + this->tilesetEditor->setAttribute(Qt::WA_DeleteOnClose); } if (!this->tilesetEditor->isVisible()) { @@ -1746,10 +1747,3 @@ void MainWindow::on_actionTileset_Editor_triggered() this->tilesetEditor->activateWindow(); } } - -void MainWindow::onTilesetEditorClosed() { - if (this->tilesetEditor) { - delete this->tilesetEditor; - this->tilesetEditor = nullptr; - } -} diff --git a/src/ui/tileseteditor.cpp b/src/ui/tileseteditor.cpp index 09fe0de7..c8157c0a 100644 --- a/src/ui/tileseteditor.cpp +++ b/src/ui/tileseteditor.cpp @@ -17,6 +17,18 @@ TilesetEditor::TilesetEditor(Project *project, QString primaryTilesetLabel, QStr TilesetEditor::~TilesetEditor() { delete ui; + delete metatileSelector; + delete tileSelector; + delete metatileLayersItem; + delete paletteEditor; + delete metatile; + delete primaryTileset; + delete secondaryTileset; + delete metatilesScene; + delete tilesScene; + delete selectedTilePixmapItem; + delete selectedTileScene; + delete metatileLayersScene; } void TilesetEditor::init(Project *project, QString primaryTilesetLabel, QString secondaryTilesetLabel) { @@ -392,16 +404,13 @@ void TilesetEditor::closeEvent(QCloseEvent *event) if (result == QMessageBox::Yes) { this->on_actionSave_Tileset_triggered(); event->accept(); - emit closed(); } else if (result == QMessageBox::No) { event->accept(); - emit closed(); } else if (result == QMessageBox::Cancel) { event->ignore(); } } else { event->accept(); - emit closed(); } }