summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp10
-rw-r--r--src/plugins/qmldesigner/components/stateseditor/stateseditorview.h1
-rw-r--r--src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp7
-rw-r--r--src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h2
-rw-r--r--src/plugins/qmldesigner/components/stateseditor/stateslist.qml1
5 files changed, 20 insertions, 1 deletions
diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp
index cfc7c92923..73f6463777 100644
--- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp
+++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp
@@ -76,7 +76,7 @@ void StatesEditorView::propertiesAboutToBeRemoved(const QList<AbstractProperty>
void StatesEditorView::rootNodeTypeChanged(const QString &/*type*/, int /*majorVersion*/, int /*minorVersion*/)
{
-
+ checkForApplicationWindow();
}
void StatesEditorView::instancePropertyChange(const QList<QPair<ModelNode, PropertyName> > &/*propertyList*/)
@@ -245,6 +245,12 @@ void StatesEditorView::duplicateCurrentState()
setCurrentState(newState);
}
+void StatesEditorView::checkForApplicationWindow()
+{
+ if (m_statesEditorWidget)
+ m_statesEditorWidget->showAddNewStatesButton(!rootModelNode().metaInfo().isSubclassOf("QtQuick.Controls.ApplicationWindow", -1, -1));
+}
+
void StatesEditorView::setCurrentState(const QmlModelState &state)
{
if (!model() && !state.isValid())
@@ -310,6 +316,8 @@ void StatesEditorView::modelAttached(Model *model)
if (m_statesEditorWidget)
m_statesEditorWidget->setNodeInstanceView(nodeInstanceView());
+ checkForApplicationWindow();
+
resetModel();
}
diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h
index c6410505e9..aa2088703a 100644
--- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h
+++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h
@@ -112,6 +112,7 @@ private:
void resetModel();
void addState();
void duplicateCurrentState();
+ void checkForApplicationWindow();
private:
QWeakPointer<StatesEditorModel> m_statesEditorModel;
diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp
index c885392462..1a56263d18 100644
--- a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp
+++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp
@@ -67,6 +67,11 @@ void StatesEditorWidget::setNodeInstanceView(NodeInstanceView *nodeInstanceView)
m_imageProvider->setNodeInstanceView(nodeInstanceView);
}
+void StatesEditorWidget::showAddNewStatesButton(bool showAddNewStatesButton)
+{
+ m_declarativeView->rootContext()->setContextProperty("canAddNewStates", showAddNewStatesButton);
+}
+
StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, StatesEditorModel *statesEditorModel):
QWidget(),
m_declarativeView(new QDeclarativeView(this)),
@@ -94,6 +99,8 @@ StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, State
highlightColor.setHsvF(highlightColor.hsvHueF(),0.1 + highlightColor.saturationF()*2.0, highlightColor.valueF());
m_declarativeView->rootContext()->setContextProperty(QLatin1String("highlightColor"), highlightColor);
+ m_declarativeView->rootContext()->setContextProperty("canAddNewStates", true);
+
// Work around ASSERT in the internal QGraphicsScene that happens when
// the scene is created + items set dirty in one event loop run (BAUHAUS-459)
//QApplication::processEvents();
diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h
index 8973b9c4a6..0d0e542588 100644
--- a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h
+++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h
@@ -62,6 +62,8 @@ public:
void setCurrentStateInternalId(int internalId);
void setNodeInstanceView(NodeInstanceView *nodeInstanceView);
+ void showAddNewStatesButton(bool showAddNewStatesButton);
+
private:
QWeakPointer<QDeclarativeView> m_declarativeView;
QWeakPointer<StatesEditorView> m_statesEditorView;
diff --git a/src/plugins/qmldesigner/components/stateseditor/stateslist.qml b/src/plugins/qmldesigner/components/stateseditor/stateslist.qml
index 6a9ec04ee3..01abea5281 100644
--- a/src/plugins/qmldesigner/components/stateseditor/stateslist.qml
+++ b/src/plugins/qmldesigner/components/stateseditor/stateslist.qml
@@ -85,6 +85,7 @@ Rectangle {
id: newStateBoxLoader;
width:132
height:listViewRow.height
+ visible: canAddNewStates
Loader {
sourceComponent: addState;
// make it square