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)
|
||||
{
|
||||
Q_ASSERT(model);
|
||||
temporaryBlockView();
|
||||
|
||||
AbstractView::modelAttached(model);
|
||||
|
||||
Q_ASSERT(m_scene->formLayerItem());
|
||||
if (!isEnabled())
|
||||
return;
|
||||
|
||||
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());
|
||||
temporaryBlockView();
|
||||
setupFormEditorWidget();
|
||||
}
|
||||
|
||||
|
||||
@@ -256,7 +244,7 @@ void FormEditorView::nodeCreated(const ModelNode &node)
|
||||
setupFormEditorItemTree(QmlItemNode(node));
|
||||
}
|
||||
|
||||
void FormEditorView::modelAboutToBeDetached(Model *model)
|
||||
void FormEditorView::cleanupToolsAndScene()
|
||||
{
|
||||
m_currentTool->setItems(QList<FormEditorItem *>());
|
||||
m_selectionTool->clear();
|
||||
@@ -270,8 +258,12 @@ void FormEditorView::modelAboutToBeDetached(Model *model)
|
||||
m_formEditorWidget->resetView();
|
||||
scene()->resetScene();
|
||||
|
||||
m_currentTool = m_selectionTool.get();
|
||||
changeCurrentToolTo(m_selectionTool.get());
|
||||
}
|
||||
|
||||
void FormEditorView::modelAboutToBeDetached(Model *model)
|
||||
{
|
||||
cleanupToolsAndScene();
|
||||
AbstractView::modelAboutToBeDetached(model);
|
||||
}
|
||||
|
||||
@@ -551,6 +543,11 @@ void FormEditorView::changeToSelectionTool(QGraphicsSceneMouseEvent *event)
|
||||
m_selectionTool->selectUnderPoint(event);
|
||||
}
|
||||
|
||||
void FormEditorView::resetToSelectionTool()
|
||||
{
|
||||
changeCurrentToolTo(m_selectionTool.get());
|
||||
}
|
||||
|
||||
void FormEditorView::changeToResizeTool()
|
||||
{
|
||||
if (m_currentTool == m_resizeTool.get())
|
||||
@@ -593,8 +590,7 @@ void FormEditorView::changeCurrentToolTo(AbstractFormEditorTool *newTool)
|
||||
m_currentTool->clear();
|
||||
m_currentTool = newTool;
|
||||
m_currentTool->clear();
|
||||
m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(
|
||||
selectedModelNodes())));
|
||||
m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(selectedModelNodes())));
|
||||
|
||||
m_currentTool->start();
|
||||
}
|
||||
@@ -776,6 +772,26 @@ QPicture FormEditorView::renderToPicture() const
|
||||
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)
|
||||
{
|
||||
QmlObjectNode qmlObjectNode = firstQmlObjectNode;
|
||||
|
@@ -103,6 +103,7 @@ public:
|
||||
void changeToDragTool();
|
||||
void changeToSelectionTool();
|
||||
void changeToSelectionTool(QGraphicsSceneMouseEvent *event);
|
||||
void resetToSelectionTool();
|
||||
void changeToResizeTool();
|
||||
void changeToTransformTools();
|
||||
void changeToCustomTool();
|
||||
@@ -130,6 +131,9 @@ public:
|
||||
void exportAsImage();
|
||||
QPicture renderToPicture() const;
|
||||
|
||||
void setupFormEditorWidget();
|
||||
void cleanupToolsAndScene();
|
||||
|
||||
protected:
|
||||
void reset();
|
||||
void delayedReset();
|
||||
|
@@ -518,4 +518,25 @@ DocumentWarningWidget *FormEditorWidget::errorWidget()
|
||||
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
|
||||
|
@@ -91,6 +91,8 @@ protected:
|
||||
void wheelEvent(QWheelEvent *event) override;
|
||||
QActionGroup *toolActionGroup() const;
|
||||
DocumentWarningWidget *errorWidget();
|
||||
void hideEvent(QHideEvent *event) override;
|
||||
void showEvent(QShowEvent *event) override;
|
||||
|
||||
private:
|
||||
void changeTransformTool(bool checked);
|
||||
|
Reference in New Issue
Block a user