Fixed: #1193 Correct deleting particle system from workspace

This commit is contained in:
dnk-88 2011-11-08 00:22:32 +02:00
parent 43b0cf8ad1
commit 2234eae556
3 changed files with 8 additions and 2 deletions

View file

@ -78,6 +78,8 @@ void CParticleEditor::release()
void CParticleEditor::setActiveNode(CWorkspaceNode *node)
{
if (node == _ActiveNode) return;
if (node == 0)
_ActiveNode->getPSModel()->hide();
_ActiveNode = node;
bool wasRunning = _State == State::RunningSingle;

View file

@ -378,6 +378,7 @@ void CParticleWorkspace::removeNode(uint index)
{
nlassert(index < _Nodes.size());
_Nodes[index] = NULL; // delete the smart-ptr target
delete _Nodes[index];
_Nodes.erase(_Nodes.begin() + index);
touch();
}

View file

@ -305,6 +305,8 @@ void CParticleWorkspaceDialog::customContextMenu()
_instanciateAction->setEnabled(stopped);
_savePSAction->setEnabled(stopped);
_saveAsPSAction->setEnabled(stopped);
_removeFromWSAction->setEnabled(stopped);
_clearContentAction->setEnabled(stopped);
popurMenu->exec(QCursor::pos());
delete popurMenu;
@ -369,13 +371,14 @@ void CParticleWorkspaceDialog::clearContent()
void CParticleWorkspaceDialog::removePS()
{
if (_treeModel->getOwnerNode(_currentItem) == Modules::psEdit().getActiveNode())
CWorkspaceNode *node = _currentItem->getNode();
if (node == Modules::psEdit().getActiveNode())
Modules::psEdit().setActiveNode(NULL);
QModelIndex index = _ui.treeView->currentIndex();
_ui.treeView->setCurrentIndex(index.parent());
clickedItem(index.parent());
Modules::psEdit().getParticleWorkspace()->removeNode(static_cast<CParticleTreeItem *>(index.internalPointer())->getNode());
Modules::psEdit().getParticleWorkspace()->removeNode(node);
_treeModel->removeRows(index.row(), index.parent());
}