diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index 3c4349bd624..d07b77f3d94 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -217,7 +217,7 @@ void DesignModeWidget::enableWidgets() { if (debug) qDebug() << Q_FUNC_INFO; - m_warningWidget->setVisible(false); + hideWarningWidget(); viewManager().enableWidgets(); m_leftSideBar->setEnabled(true); m_rightSideBar->setEnabled(true); @@ -299,18 +299,6 @@ void DesignModeWidget::setup() m_mainSplitter = new MiniSplitter(this); m_mainSplitter->setObjectName("mainSplitter"); - // warning frame should be not in layout, but still child of the widget - m_warningWidget = new DocumentWarningWidget(this); - m_warningWidget->setVisible(false); - connect(m_warningWidget.data(), &DocumentWarningWidget::gotoCodeClicked, [=] - (const QString &filePath, int codeLine, int codeColumn) { - Q_UNUSED(filePath); - - if (currentDesignDocument() && currentDesignDocument()->textEditor()) - currentDesignDocument()->textEditor()->gotoLine(codeLine, codeColumn); - Core::ModeManager::activateMode(Core::Constants::MODE_EDIT); - }); - QList sideBarItems; QList leftSideBarItems; QList rightSideBarItems; @@ -387,7 +375,6 @@ void DesignModeWidget::setup() mainLayout->setSpacing(0); mainLayout->addWidget(m_mainSplitter); - m_warningWidget->setVisible(false); viewManager().enableWidgets(); m_leftSideBar->setEnabled(true); m_rightSideBar->setEnabled(true); @@ -549,24 +536,46 @@ QWidget *DesignModeWidget::createCrumbleBarFrame() return frame; } +DocumentWarningWidget *DesignModeWidget::warningWidget() +{ + if (m_warningWidget.isNull()) { + m_warningWidget = new DocumentWarningWidget(this); + connect(m_warningWidget.data(), &DocumentWarningWidget::gotoCodeClicked, [=] + (const QString &filePath, int codeLine, int codeColumn) { + Q_UNUSED(filePath); + + if (currentDesignDocument() && currentDesignDocument()->textEditor()) + currentDesignDocument()->textEditor()->gotoLine(codeLine, codeColumn); + Core::ModeManager::activateMode(Core::Constants::MODE_EDIT); + }); + } + return m_warningWidget; +} + +void DesignModeWidget::hideWarningWidget() +{ + if (m_warningWidget) + m_warningWidget->setVisible(false); +} + void DesignModeWidget::showErrorMessageBox(const QList &errors) { Q_ASSERT(!errors.isEmpty()); - m_warningWidget->setErrors(errors); - m_warningWidget->setVisible(true); + warningWidget()->setErrors(errors); + warningWidget()->setVisible(true); } void DesignModeWidget::showWarningMessageBox(const QList &warnings) { Q_ASSERT(!warnings.isEmpty()); - m_warningWidget->setWarnings(warnings); - m_warningWidget->setVisible(true); + warningWidget()->setWarnings(warnings); + warningWidget()->setVisible(true); } bool DesignModeWidget::gotoCodeWasClicked() { if (m_warningWidget) - return m_warningWidget->gotoCodeWasClicked(); + return warningWidget()->gotoCodeWasClicked(); return false; } diff --git a/src/plugins/qmldesigner/designmodewidget.h b/src/plugins/qmldesigner/designmodewidget.h index f743432d515..a0797b069ee 100644 --- a/src/plugins/qmldesigner/designmodewidget.h +++ b/src/plugins/qmldesigner/designmodewidget.h @@ -101,6 +101,8 @@ private: // functions void addNavigatorHistoryEntry(const Utils::FileName &fileName); QWidget *createCenterWidget(); QWidget *createCrumbleBarFrame(); + DocumentWarningWidget *warningWidget(); + void hideWarningWidget(); private: // variables QSplitter *m_mainSplitter = nullptr;