QmlDesigner: fixes crash

Deleting an items might have a side effect that turns
the qml code invalid. (e. g. alias properties)

We catch this an show a proper error message.

Task-number: QTCREATORBUG-2973
Reviewed-by: Kai Koehne
This commit is contained in:
Thomas Hartmann
2010-11-02 11:17:59 +01:00
parent d7216e84cc
commit a4640e361f

View File

@@ -51,6 +51,7 @@
#include <nodelistproperty.h> #include <nodelistproperty.h>
#include <toolbox.h> #include <toolbox.h>
#include <variantproperty.h> #include <variantproperty.h>
#include <rewritingexception.h>
#include <QtCore/QCoreApplication> #include <QtCore/QCoreApplication>
#include <QtCore/QDir> #include <QtCore/QDir>
@@ -456,13 +457,17 @@ void DesignDocumentController::deleteSelected()
if (!m_d->model) if (!m_d->model)
return; return;
if (m_d->formEditorView) { try {
RewriterTransaction transaction(m_d->formEditorView.data()); if (m_d->formEditorView) {
QList<ModelNode> toDelete = m_d->formEditorView->selectedModelNodes(); RewriterTransaction transaction(m_d->formEditorView.data());
foreach (ModelNode node, toDelete) { QList<ModelNode> toDelete = m_d->formEditorView->selectedModelNodes();
if (node.isValid() && !node.isRootNode() && QmlObjectNode(node).isValid()) foreach (ModelNode node, toDelete) {
QmlObjectNode(node).destroy(); if (node.isValid() && !node.isRootNode() && QmlObjectNode(node).isValid())
QmlObjectNode(node).destroy();
}
} }
} catch (RewritingException &e) {
QMessageBox::warning(0, tr("Error"), e.description());
} }
} }