Fixed: #1193 Correct deleting particle system from workspace
This commit is contained in:
parent
43b0cf8ad1
commit
2234eae556
3 changed files with 8 additions and 2 deletions
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue