From 9624bf05086afed93aceef81a3d4a62b7e276321 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 15 Nov 2017 10:10:21 +0100 Subject: [PATCH] QmlDesigner: Disable widgets while text is edited manually While the user is editing text in the text editor we disable the input widgets. This ensures that the rewriter is not confused by the manual editing and also there is no guarantee that the QML code is syntacially correct. We also disable the toolbar. Change-Id: If062b49f834e901a933a9b1f67582ee9be6232bc Reviewed-by: Tim Jenssen --- .../qmldesigner/designercore/model/rewriterview.cpp | 11 +++++++++-- .../qmldesigner/designercore/model/viewmanager.cpp | 10 ++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 6bd5522d637..82584dc70e5 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -40,6 +40,11 @@ #include #include +#ifndef QMLDESIGNER_TEST +#include +#include +#endif + #include #include #include @@ -855,15 +860,17 @@ void RewriterView::qmlTextChanged() } case Amend: { - if (m_instantQmlTextUpdate) + if (m_instantQmlTextUpdate) { amendQmlText(); - else + } else { #ifndef QMLDESIGNER_TEST + QmlDesignerPlugin::instance()->viewManager().disableWidgets(); m_amendTimer.start(400); #else /*Keep test synchronous*/ amendQmlText(); #endif + } break; } } diff --git a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp index 16078ecb739..e212b8d52a6 100644 --- a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp +++ b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp @@ -360,15 +360,21 @@ QWidget *ViewManager::widget(const QString &uniqueId) const void ViewManager::disableWidgets() { foreach (const WidgetInfo &widgetInfo, widgetInfos()) - if (widgetInfo.widgetFlags == DesignerWidgetFlags::DisableOnError) + if (widgetInfo.widgetFlags == DesignerWidgetFlags::DisableOnError) { widgetInfo.widget->setEnabled(false); + if (auto parentWidget = widgetInfo.widget->parentWidget()) + parentWidget->setEnabled(false); + } } void ViewManager::enableWidgets() { foreach (const WidgetInfo &widgetInfo, widgetInfos()) - if (widgetInfo.widgetFlags == DesignerWidgetFlags::DisableOnError) + if (widgetInfo.widgetFlags == DesignerWidgetFlags::DisableOnError) { widgetInfo.widget->setEnabled(true); + if (auto parentWidget = widgetInfo.widget->parentWidget()) + parentWidget->setEnabled(true); + } } void ViewManager::pushFileOnCrumbleBar(const Utils::FileName &fileName)