From fde2bc25712f80f031d7ba7ce048edd62bc58202 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann <thomas.hartmann@qt.io> Date: Mon, 10 Jul 2017 16:45:01 +0200 Subject: [PATCH] QmlDesigner: Show message box if StatesList.qml cannot be created I also removed the hard assert. Change-Id: Ia15d9f82fb63e7d8dd6acf8547b9e96bad838d3f Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io> --- .../stateseditor/stateseditorwidget.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp index b07664af3a..dc080a2577 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp @@ -33,6 +33,7 @@ #include <invalidqmlsourceexception.h> +#include <coreplugin/messagebox.h> #include <coreplugin/icore.h> #include <utils/qtcassert.h> @@ -57,15 +58,15 @@ namespace QmlDesigner { int StatesEditorWidget::currentStateInternalId() const { - Q_ASSERT(rootObject()); - Q_ASSERT(rootObject()->property("currentStateInternalId").isValid()); + QTC_ASSERT(rootObject(), return -1); + QTC_ASSERT(rootObject()->property("currentStateInternalId").isValid(), return -1); return rootObject()->property("currentStateInternalId").toInt(); } void StatesEditorWidget::setCurrentStateInternalId(int internalId) { - Q_ASSERT(rootObject()); + QTC_ASSERT(rootObject(), return); rootObject()->setProperty("currentStateInternalId", internalId); } @@ -119,6 +120,7 @@ QString StatesEditorWidget::qmlSourcesPath() { void StatesEditorWidget::toggleStatesViewExpanded() { + QTC_ASSERT(rootObject(), return); bool expanded = rootObject()->property("expanded").toBool(); rootObject()->setProperty("expanded", !expanded); } @@ -130,7 +132,13 @@ void StatesEditorWidget::reloadQmlSource() engine()->clearComponentCache(); setSource(QUrl::fromLocalFile(statesListQmlFilePath)); - QTC_ASSERT(rootObject(), return); + if (!rootObject()) { + Core::AsynchronousMessageBox::warning(tr("Cannot create QtQuick View"), + tr("StatesEditorWidget: %1 cannot be created. " + "Most likely QtQuick.Controls 1 are not installed.").arg(qmlSourcesPath())); + return; + } + connect(rootObject(), SIGNAL(currentStateInternalIdChanged()), m_statesEditorView.data(), SLOT(synchonizeCurrentStateFromWidget())); connect(rootObject(), SIGNAL(createNewState()), m_statesEditorView.data(), SLOT(createNewState())); connect(rootObject(), SIGNAL(deleteState(int)), m_statesEditorView.data(), SLOT(removeState(int))); @@ -147,8 +155,9 @@ void StatesEditorWidget::reloadQmlSource() void StatesEditorWidget::handleExpandedChanged() { - bool expanded = rootObject()->property("expanded").toBool(); + QTC_ASSERT(rootObject(), return); + bool expanded = rootObject()->property("expanded").toBool(); DesignerSettings::setValue(DesignerSettingsKey::STATESEDITOR_EXPANDED, expanded); setFixedHeight(rootObject()->height()); -- GitLab