forked from qt-creator/qt-creator
QmlDesigner Disable FormEditorView when not visible
Change-Id: I4bf6f3747cfd11fa31bdd386efc11fc27dbfe45c Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -77,25 +77,13 @@ FormEditorView::~FormEditorView()
|
|||||||
|
|
||||||
void FormEditorView::modelAttached(Model *model)
|
void FormEditorView::modelAttached(Model *model)
|
||||||
{
|
{
|
||||||
Q_ASSERT(model);
|
|
||||||
temporaryBlockView();
|
|
||||||
|
|
||||||
AbstractView::modelAttached(model);
|
AbstractView::modelAttached(model);
|
||||||
|
|
||||||
Q_ASSERT(m_scene->formLayerItem());
|
if (!isEnabled())
|
||||||
|
return;
|
||||||
|
|
||||||
if (QmlItemNode::isValidQmlItemNode(rootModelNode()))
|
temporaryBlockView();
|
||||||
setupFormEditorItemTree(rootModelNode());
|
setupFormEditorWidget();
|
||||||
|
|
||||||
m_formEditorWidget->updateActions();
|
|
||||||
|
|
||||||
if (!rewriterView()->errors().isEmpty())
|
|
||||||
m_formEditorWidget->showErrorMessageBox(rewriterView()->errors());
|
|
||||||
else
|
|
||||||
m_formEditorWidget->hideErrorMessageBox();
|
|
||||||
|
|
||||||
if (!rewriterView()->warnings().isEmpty())
|
|
||||||
m_formEditorWidget->showWarningMessageBox(rewriterView()->warnings());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -256,7 +244,7 @@ void FormEditorView::nodeCreated(const ModelNode &node)
|
|||||||
setupFormEditorItemTree(QmlItemNode(node));
|
setupFormEditorItemTree(QmlItemNode(node));
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormEditorView::modelAboutToBeDetached(Model *model)
|
void FormEditorView::cleanupToolsAndScene()
|
||||||
{
|
{
|
||||||
m_currentTool->setItems(QList<FormEditorItem *>());
|
m_currentTool->setItems(QList<FormEditorItem *>());
|
||||||
m_selectionTool->clear();
|
m_selectionTool->clear();
|
||||||
@@ -270,8 +258,12 @@ void FormEditorView::modelAboutToBeDetached(Model *model)
|
|||||||
m_formEditorWidget->resetView();
|
m_formEditorWidget->resetView();
|
||||||
scene()->resetScene();
|
scene()->resetScene();
|
||||||
|
|
||||||
m_currentTool = m_selectionTool.get();
|
changeCurrentToolTo(m_selectionTool.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormEditorView::modelAboutToBeDetached(Model *model)
|
||||||
|
{
|
||||||
|
cleanupToolsAndScene();
|
||||||
AbstractView::modelAboutToBeDetached(model);
|
AbstractView::modelAboutToBeDetached(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -551,6 +543,11 @@ void FormEditorView::changeToSelectionTool(QGraphicsSceneMouseEvent *event)
|
|||||||
m_selectionTool->selectUnderPoint(event);
|
m_selectionTool->selectUnderPoint(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FormEditorView::resetToSelectionTool()
|
||||||
|
{
|
||||||
|
changeCurrentToolTo(m_selectionTool.get());
|
||||||
|
}
|
||||||
|
|
||||||
void FormEditorView::changeToResizeTool()
|
void FormEditorView::changeToResizeTool()
|
||||||
{
|
{
|
||||||
if (m_currentTool == m_resizeTool.get())
|
if (m_currentTool == m_resizeTool.get())
|
||||||
@@ -593,8 +590,7 @@ void FormEditorView::changeCurrentToolTo(AbstractFormEditorTool *newTool)
|
|||||||
m_currentTool->clear();
|
m_currentTool->clear();
|
||||||
m_currentTool = newTool;
|
m_currentTool = newTool;
|
||||||
m_currentTool->clear();
|
m_currentTool->clear();
|
||||||
m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(
|
m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(selectedModelNodes())));
|
||||||
selectedModelNodes())));
|
|
||||||
|
|
||||||
m_currentTool->start();
|
m_currentTool->start();
|
||||||
}
|
}
|
||||||
@@ -776,6 +772,26 @@ QPicture FormEditorView::renderToPicture() const
|
|||||||
return m_formEditorWidget->renderToPicture();
|
return m_formEditorWidget->renderToPicture();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FormEditorView::setupFormEditorWidget()
|
||||||
|
{
|
||||||
|
Q_ASSERT(model());
|
||||||
|
|
||||||
|
Q_ASSERT(m_scene->formLayerItem());
|
||||||
|
|
||||||
|
if (QmlItemNode::isValidQmlItemNode(rootModelNode()))
|
||||||
|
setupFormEditorItemTree(rootModelNode());
|
||||||
|
|
||||||
|
m_formEditorWidget->updateActions();
|
||||||
|
|
||||||
|
if (!rewriterView()->errors().isEmpty())
|
||||||
|
m_formEditorWidget->showErrorMessageBox(rewriterView()->errors());
|
||||||
|
else
|
||||||
|
m_formEditorWidget->hideErrorMessageBox();
|
||||||
|
|
||||||
|
if (!rewriterView()->warnings().isEmpty())
|
||||||
|
m_formEditorWidget->showWarningMessageBox(rewriterView()->warnings());
|
||||||
|
}
|
||||||
|
|
||||||
QmlItemNode findRecursiveQmlItemNode(const QmlObjectNode &firstQmlObjectNode)
|
QmlItemNode findRecursiveQmlItemNode(const QmlObjectNode &firstQmlObjectNode)
|
||||||
{
|
{
|
||||||
QmlObjectNode qmlObjectNode = firstQmlObjectNode;
|
QmlObjectNode qmlObjectNode = firstQmlObjectNode;
|
||||||
|
@@ -103,6 +103,7 @@ public:
|
|||||||
void changeToDragTool();
|
void changeToDragTool();
|
||||||
void changeToSelectionTool();
|
void changeToSelectionTool();
|
||||||
void changeToSelectionTool(QGraphicsSceneMouseEvent *event);
|
void changeToSelectionTool(QGraphicsSceneMouseEvent *event);
|
||||||
|
void resetToSelectionTool();
|
||||||
void changeToResizeTool();
|
void changeToResizeTool();
|
||||||
void changeToTransformTools();
|
void changeToTransformTools();
|
||||||
void changeToCustomTool();
|
void changeToCustomTool();
|
||||||
@@ -130,6 +131,9 @@ public:
|
|||||||
void exportAsImage();
|
void exportAsImage();
|
||||||
QPicture renderToPicture() const;
|
QPicture renderToPicture() const;
|
||||||
|
|
||||||
|
void setupFormEditorWidget();
|
||||||
|
void cleanupToolsAndScene();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void reset();
|
void reset();
|
||||||
void delayedReset();
|
void delayedReset();
|
||||||
|
@@ -518,4 +518,25 @@ DocumentWarningWidget *FormEditorWidget::errorWidget()
|
|||||||
return m_documentErrorWidget;
|
return m_documentErrorWidget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FormEditorWidget::hideEvent(QHideEvent *event)
|
||||||
|
{
|
||||||
|
QWidget::hideEvent(event);
|
||||||
|
|
||||||
|
m_formEditorView->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormEditorWidget::showEvent(QShowEvent *event)
|
||||||
|
{
|
||||||
|
QWidget::showEvent(event);
|
||||||
|
|
||||||
|
const bool wasEnabled = isEnabled();
|
||||||
|
m_formEditorView->setEnabled(true);
|
||||||
|
|
||||||
|
if (!wasEnabled && m_formEditorView->model()) {
|
||||||
|
m_formEditorView->cleanupToolsAndScene();
|
||||||
|
m_formEditorView->setupFormEditorWidget();
|
||||||
|
m_formEditorView->resetToSelectionTool();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -91,6 +91,8 @@ protected:
|
|||||||
void wheelEvent(QWheelEvent *event) override;
|
void wheelEvent(QWheelEvent *event) override;
|
||||||
QActionGroup *toolActionGroup() const;
|
QActionGroup *toolActionGroup() const;
|
||||||
DocumentWarningWidget *errorWidget();
|
DocumentWarningWidget *errorWidget();
|
||||||
|
void hideEvent(QHideEvent *event) override;
|
||||||
|
void showEvent(QShowEvent *event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void changeTransformTool(bool checked);
|
void changeTransformTool(bool checked);
|
||||||
|
Reference in New Issue
Block a user