void TilesetDock::deleteTilesetView(int index) { TilesetDocument *tilesetDocument = mTilesetDocuments.at(index); tilesetDocument->disconnect(this); Tileset *tileset = tilesetDocument->tileset().data(); TilesetView *view = tilesetViewAt(index); QString path = QLatin1String("TilesetDock/TilesetScale/") + tileset->name(); QSettings *settings = Preferences::instance()->settings(); if (view->scale() != 1.0) settings->setValue(path, view->scale()); else settings->remove(path); mTilesets.remove(index); mTilesetDocuments.removeAt(index); delete view; // view needs to go before the tab mTabBar->removeTab(index); // Make sure we don't reference this tileset anymore if (mCurrentTiles && mCurrentTiles->referencesTileset(tileset)) { TileLayer *cleaned = mCurrentTiles->clone(); cleaned->removeReferencesToTileset(tileset); setCurrentTiles(cleaned); } if (mCurrentTile && mCurrentTile->tileset() == tileset) setCurrentTile(nullptr); }
void TilesetEditor::removeDocument(Document *document) { TilesetDocument *tilesetDocument = qobject_cast<TilesetDocument*>(document); Q_ASSERT(tilesetDocument); Q_ASSERT(mViewForTileset.contains(tilesetDocument)); tilesetDocument->disconnect(this); TilesetView *view = mViewForTileset.take(tilesetDocument); QString path = QLatin1String("TilesetEditor/TilesetScale/") + tilesetDocument->tileset()->name(); QSettings *settings = Preferences::instance()->settings(); if (view->scale() != 1.0) settings->setValue(path, view->scale()); else settings->remove(path); // remove first, to keep it valid while the current widget changes mWidgetStack->removeWidget(view); delete view; }