void TileCollisionDock::tileObjectGroupChanged(Tile *tile) { if (mTile != tile) return; if (mApplyingChanges) return; mSynchronizing = true; mDummyMapDocument->undoStack()->clear(); auto selectedTool = mToolManager->selectedTool(); LayerModel *layerModel = mDummyMapDocument->layerModel(); delete layerModel->takeLayerAt(nullptr, 1); ObjectGroup *objectGroup; if (tile->objectGroup()) objectGroup = tile->objectGroup()->clone(); else objectGroup = new ObjectGroup; objectGroup->setDrawOrder(ObjectGroup::IndexOrder); layerModel->insertLayer(nullptr, 1, objectGroup); mDummyMapDocument->setCurrentLayer(objectGroup); mToolManager->selectTool(selectedTool); mSynchronizing = false; }
Layer *ResizeLayer::swapLayer(Layer *layer) { const int currentIndex = mMapDocument->currentLayer(); LayerModel *layerModel = mMapDocument->layerModel(); Layer *replaced = layerModel->takeLayerAt(mIndex); layerModel->insertLayer(mIndex, layer); if (mIndex == currentIndex) mMapDocument->setCurrentLayer(mIndex); return replaced; }