forked from qt-creator/qt-creator
QmlDesigner: Polish error handling for integrated text editor
The integrated text editor requires a couple of fixes and features in the error handling. The errors are now handled by the model and not the document management anymore. The text editor does not get disabled if there is an error. Instead we show the error in a status bar. The form editor is blocked if there is a QML an error and we show the error message inside the form editor. Change-Id: I4bfb9b33b09e444ec1de31dd531ce83b32cbcf88 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
committed by
Tim Jenssen
parent
8b67458a95
commit
759db2b7b6
@@ -132,12 +132,6 @@ DesignModeWidget::DesignModeWidget(QWidget *parent)
|
||||
, m_toolBar(new Core::EditorToolBar(this))
|
||||
, m_crumbleBar(new CrumbleBar(this))
|
||||
{
|
||||
connect(viewManager().nodeInstanceView(), &NodeInstanceView::qmlPuppetCrashed,
|
||||
[=]() {
|
||||
RewriterError error(tr("Qt Quick emulation layer crashed"));
|
||||
updateErrorStatus(QList<RewriterError>() << error);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
DesignModeWidget::~DesignModeWidget()
|
||||
@@ -221,8 +215,6 @@ void DesignModeWidget::enableWidgets()
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
hideWarningWidget();
|
||||
viewManager().enableWidgets();
|
||||
m_leftSideBar->setEnabled(true);
|
||||
m_rightSideBar->setEnabled(true);
|
||||
m_isDisabled = false;
|
||||
}
|
||||
|
||||
@@ -232,8 +224,6 @@ void DesignModeWidget::disableWidgets()
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
|
||||
viewManager().disableWidgets();
|
||||
m_leftSideBar->setEnabled(false);
|
||||
m_rightSideBar->setEnabled(false);
|
||||
m_isDisabled = true;
|
||||
}
|
||||
|
||||
@@ -242,17 +232,18 @@ void DesignModeWidget::showTextEdit()
|
||||
m_centralTabWidget->setCurrentIndex(m_centralTabWidget->currentIndex() == 0 ? 1 : 0);
|
||||
}
|
||||
|
||||
void DesignModeWidget::updateErrorStatus(const QList<RewriterError> &errors)
|
||||
void DesignModeWidget::showWarningMessageBox(const QList<RewriterError> &warnings)
|
||||
{
|
||||
if (debug)
|
||||
qDebug() << Q_FUNC_INFO << errors.count();
|
||||
Q_ASSERT(!warnings.isEmpty());
|
||||
warningWidget()->setWarnings(warnings);
|
||||
warningWidget()->setVisible(true);
|
||||
}
|
||||
|
||||
if (m_isDisabled && errors.isEmpty()) {
|
||||
enableWidgets();
|
||||
} else if (!errors.isEmpty()) {
|
||||
disableWidgets();
|
||||
showErrorMessageBox(errors);
|
||||
}
|
||||
bool DesignModeWidget::gotoCodeWasClicked()
|
||||
{
|
||||
if (m_warningWidget)
|
||||
return warningWidget()->gotoCodeWasClicked();
|
||||
return false;
|
||||
}
|
||||
|
||||
static void hideToolButtons(QList<QToolButton*> &buttons)
|
||||
@@ -576,27 +567,6 @@ void DesignModeWidget::hideWarningWidget()
|
||||
m_warningWidget->setVisible(false);
|
||||
}
|
||||
|
||||
void DesignModeWidget::showErrorMessageBox(const QList<RewriterError> &errors)
|
||||
{
|
||||
Q_ASSERT(!errors.isEmpty());
|
||||
warningWidget()->setErrors(errors);
|
||||
warningWidget()->setVisible(true);
|
||||
}
|
||||
|
||||
void DesignModeWidget::showWarningMessageBox(const QList<RewriterError> &warnings)
|
||||
{
|
||||
Q_ASSERT(!warnings.isEmpty());
|
||||
warningWidget()->setWarnings(warnings);
|
||||
warningWidget()->setVisible(true);
|
||||
}
|
||||
|
||||
bool DesignModeWidget::gotoCodeWasClicked()
|
||||
{
|
||||
if (m_warningWidget)
|
||||
return warningWidget()->gotoCodeWasClicked();
|
||||
return false;
|
||||
}
|
||||
|
||||
CrumbleBar *DesignModeWidget::crumbleBar() const
|
||||
{
|
||||
return m_crumbleBar;
|
||||
|
||||
Reference in New Issue
Block a user