diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2022-09-22 10:32:40 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2022-09-22 10:32:40 +0200 |
commit | 80e2eddd957bbb35a2197e5a869871017592f7a9 (patch) | |
tree | 9818b7f7dad27fe3596cbb85b591e59b5114f8e4 | |
parent | 645fce14e006387ba4e2a4befcdd25b1bc1e111c (diff) | |
parent | fec59c21dfecc2922595e16255d9b18fd374df02 (diff) |
Merge remote-tracking branch 'origin/8.0'
resolved conflicts:
share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp
src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
src/plugins/qmldesigner/designercore/exceptions/exception.cpp
Change-Id: I13a5248415fa1ae03e1c6d0972d9b3bb8c80a3b0
41 files changed, 300 insertions, 308 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp index b79cca8d3c..07212ec459 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp @@ -78,7 +78,13 @@ void Qt5RenderNodeInstanceServer::collectItemChangesAndSendChangeCommands() m_dirtyInstanceSet.insert(instanceForObject(effectParent)); } } - } else if (QQuickDesignerSupport::isDirty(item, QQuickDesignerSupport::AllMask)) { + } else if (DesignerSupport::isDirty( + item, + DesignerSupport::DirtyType( + DesignerSupport::AllMask + | DesignerSupport::ZValue + | DesignerSupport::OpacityValue + | DesignerSupport::Visible))) { ServerNodeInstance ancestorInstance = findNodeInstanceForItem( item->parentItem()); if (ancestorInstance.isValid()) diff --git a/share/qtcreator/qmldesigner/newstateseditor/StateMenu.qml b/share/qtcreator/qmldesigner/newstateseditor/StateMenu.qml index 8d0bb8810c..d26572ebde 100644 --- a/share/qtcreator/qmldesigner/newstateseditor/StateMenu.qml +++ b/share/qtcreator/qmldesigner/newstateseditor/StateMenu.qml @@ -87,9 +87,7 @@ StudioControls.Menu { StudioControls.MenuItem { enabled: !root.isBaseState && root.hasWhenCondition text: qsTr("Reset when Condition") - onTriggered: { - statesEditorModel.resetWhenCondition(internalNodeId) - } + onTriggered: root.resetWhenCondition() } StudioControls.MenuSeparator {} diff --git a/share/qtcreator/qmldesigner/newstateseditor/StateThumbnail.qml b/share/qtcreator/qmldesigner/newstateseditor/StateThumbnail.qml index 83de652edb..642ebd972d 100644 --- a/share/qtcreator/qmldesigner/newstateseditor/StateThumbnail.qml +++ b/share/qtcreator/qmldesigner/newstateseditor/StateThumbnail.qml @@ -270,7 +270,6 @@ Item { x: scrollView.leftPadding y: scrollView.height - height width: scrollView.availableWidth - active: scrollView.ScrollBar.vertical.active orientation: Qt.Horizontal onPressedChanged: root.focusSignal() } @@ -280,7 +279,6 @@ Item { x: scrollView.mirrored ? 0 : scrollView.width - width y: scrollView.topPadding height: scrollView.availableHeight - active: scrollView.ScrollBar.horizontal.active orientation: Qt.Vertical onPressedChanged: root.focusSignal() } @@ -656,7 +654,12 @@ Item { return whenCondition.previousCondition = whenCondition.text - root.whenConditionFinished() + + if (whenCondition.text !== "") + root.whenConditionFinished() + else + statesEditorModel.resetWhenCondition(root.internalNodeId) + } Component.onCompleted: whenCondition.previousCondition = whenCondition.text @@ -696,6 +699,7 @@ Item { onExtend: root.extend() onRemove: root.remove() onToggle: root.propertyChangesVisible = !root.propertyChangesVisible + onResetWhenCondition: statesEditorModel.resetWhenCondition(root.internalNodeId) onEditAnnotation: { statesEditorModel.setAnnotation(root.internalNodeId) stateMenu.hasAnnotation = root.checkAnnotation() diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/DynamicPropertiesSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/DynamicPropertiesSection.qml index 2a0580edf1..fedf76bdbb 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/DynamicPropertiesSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/DynamicPropertiesSection.qml @@ -480,10 +480,6 @@ Section { model: root.propertiesModel property bool loadActive: true - onCountChanged: { - repeater.loadActive = false - repeater.loadActive = true - } SectionLayout { DynamicPropertyRow { diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml index 7a85e6a9b2..9339fda0da 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml @@ -49,125 +49,128 @@ QtObject { readonly property string centerHorizontal: "\u0042" readonly property string centerVertical: "\u0043" readonly property string closeCross: "\u0044" - readonly property string colorPopupClose: "\u0045" - readonly property string columnsAndRows: "\u0046" - readonly property string copyStyle: "\u0047" - readonly property string cornerA: "\u0048" - readonly property string cornerB: "\u0049" - readonly property string cornersAll: "\u004A" - readonly property string curveDesigner: "\u004B" - readonly property string curveEditor: "\u004C" - readonly property string customMaterialEditor: "\u004D" - readonly property string decisionNode: "\u004E" - readonly property string deleteColumn: "\u004F" - readonly property string deleteMaterial: "\u0050" - readonly property string deleteRow: "\u0051" - readonly property string deleteTable: "\u0052" - readonly property string detach: "\u0053" - readonly property string distributeBottom: "\u0054" - readonly property string distributeCenterHorizontal: "\u0055" - readonly property string distributeCenterVertical: "\u0056" - readonly property string distributeLeft: "\u0057" - readonly property string distributeOriginBottomRight: "\u0058" - readonly property string distributeOriginCenter: "\u0059" - readonly property string distributeOriginNone: "\u005A" - readonly property string distributeOriginTopLeft: "\u005B" - readonly property string distributeRight: "\u005C" - readonly property string distributeSpacingHorizontal: "\u005D" - readonly property string distributeSpacingVertical: "\u005E" - readonly property string distributeTop: "\u005F" - readonly property string download: "\u0060" - readonly property string downloadUnavailable: "\u0061" - readonly property string downloadUpdate: "\u0062" - readonly property string downloaded: "\u0063" - readonly property string edit: "\u0064" - readonly property string eyeDropper: "\u0065" - readonly property string favorite: "\u0066" - readonly property string flowAction: "\u0067" - readonly property string flowTransition: "\u0068" - readonly property string fontStyleBold: "\u0069" - readonly property string fontStyleItalic: "\u006A" - readonly property string fontStyleStrikethrough: "\u006B" - readonly property string fontStyleUnderline: "\u006C" - readonly property string gradient: "\u006D" - readonly property string gridView: "\u006E" - readonly property string idAliasOff: "\u006F" - readonly property string idAliasOn: "\u0070" - readonly property string infinity: "\u0071" - readonly property string keyframe: "\u0072" - readonly property string linkTriangle: "\u0073" - readonly property string linked: "\u0074" - readonly property string listView: "\u0075" - readonly property string lockOff: "\u0076" - readonly property string lockOn: "\u0077" - readonly property string materialPreviewEnvironment: "\u0078" - readonly property string materialPreviewModel: "\u0079" - readonly property string mergeCells: "\u007A" - readonly property string minus: "\u007B" - readonly property string mirror: "\u007C" - readonly property string newMaterial: "\u007D" - readonly property string openMaterialBrowser: "\u007E" - readonly property string orientation: "\u007F" - readonly property string paddingEdge: "\u0080" - readonly property string paddingFrame: "\u0081" - readonly property string pasteStyle: "\u0082" - readonly property string pause: "\u0083" - readonly property string pin: "\u0084" - readonly property string play: "\u0085" - readonly property string plus: "\u0086" - readonly property string promote: "\u0087" - readonly property string readOnly: "\u0088" - readonly property string redo: "\u0089" - readonly property string rotationFill: "\u008A" - readonly property string rotationOutline: "\u008B" - readonly property string search: "\u008C" - readonly property string sectionToggle: "\u008D" - readonly property string splitColumns: "\u008E" - readonly property string splitRows: "\u008F" - readonly property string startNode: "\u0090" - readonly property string testIcon: "\u0091" - readonly property string textAlignBottom: "\u0092" - readonly property string textAlignCenter: "\u0093" - readonly property string textAlignJustified: "\u0094" - readonly property string textAlignLeft: "\u0095" - readonly property string textAlignMiddle: "\u0096" - readonly property string textAlignRight: "\u0097" - readonly property string textAlignTop: "\u0098" - readonly property string textBulletList: "\u0099" - readonly property string textFullJustification: "\u009A" - readonly property string textNumberedList: "\u009B" - readonly property string tickIcon: "\u009D" - readonly property string translationCreateFiles: "\u009E" - readonly property string translationCreateReport: "\u009F" - readonly property string translationExport: "\u00A0" - readonly property string translationImport: "\u00A1" - readonly property string translationSelectLanguages: "\u00A2" - readonly property string translationTest: "\u00A3" - readonly property string transparent: "\u00A4" - readonly property string triState: "\u00A5" - readonly property string triangleArcA: "\u00A6" - readonly property string triangleArcB: "\u00A7" - readonly property string triangleCornerA: "\u00A8" - readonly property string triangleCornerB: "\u00A9" - readonly property string unLinked: "\u00AA" - readonly property string undo: "\u00AB" - readonly property string unpin: "\u00AC" - readonly property string upDownIcon: "\u00AE" - readonly property string upDownSquare2: "\u00AF" - readonly property string visibilityOff: "\u00B0" - readonly property string visibilityOn: "\u00B1" - readonly property string wildcard: "\u00B2" - readonly property string wizardsAutomotive: "\u00B3" - readonly property string wizardsDesktop: "\u00B4" - readonly property string wizardsGeneric: "\u00B5" - readonly property string wizardsMcuEmpty: "\u00B6" - readonly property string wizardsMcuGraph: "\u00B7" - readonly property string wizardsMobile: "\u00B8" - readonly property string wizardsUnknown: "\u00B9" - readonly property string zoomAll: "\u00BA" - readonly property string zoomIn: "\u00BB" - readonly property string zoomOut: "\u00BC" - readonly property string zoomSelection: "\u00BD" + readonly property string closeLink: "\u0045" + readonly property string colorPopupClose: "\u0046" + readonly property string columnsAndRows: "\u0047" + readonly property string copyLink: "\u0048" + readonly property string copyStyle: "\u0049" + readonly property string cornerA: "\u004A" + readonly property string cornerB: "\u004B" + readonly property string cornersAll: "\u004C" + readonly property string curveDesigner: "\u004D" + readonly property string curveEditor: "\u004E" + readonly property string customMaterialEditor: "\u004F" + readonly property string decisionNode: "\u0050" + readonly property string deleteColumn: "\u0051" + readonly property string deleteMaterial: "\u0052" + readonly property string deleteRow: "\u0053" + readonly property string deleteTable: "\u0054" + readonly property string detach: "\u0055" + readonly property string distributeBottom: "\u0056" + readonly property string distributeCenterHorizontal: "\u0057" + readonly property string distributeCenterVertical: "\u0058" + readonly property string distributeLeft: "\u0059" + readonly property string distributeOriginBottomRight: "\u005A" + readonly property string distributeOriginCenter: "\u005B" + readonly property string distributeOriginNone: "\u005C" + readonly property string distributeOriginTopLeft: "\u005D" + readonly property string distributeRight: "\u005E" + readonly property string distributeSpacingHorizontal: "\u005F" + readonly property string distributeSpacingVertical: "\u0060" + readonly property string distributeTop: "\u0061" + readonly property string download: "\u0062" + readonly property string downloadUnavailable: "\u0063" + readonly property string downloadUpdate: "\u0064" + readonly property string downloaded: "\u0065" + readonly property string edit: "\u0066" + readonly property string eyeDropper: "\u0067" + readonly property string favorite: "\u0068" + readonly property string flowAction: "\u0069" + readonly property string flowTransition: "\u006A" + readonly property string fontStyleBold: "\u006B" + readonly property string fontStyleItalic: "\u006C" + readonly property string fontStyleStrikethrough: "\u006D" + readonly property string fontStyleUnderline: "\u006E" + readonly property string gradient: "\u006F" + readonly property string gridView: "\u0070" + readonly property string idAliasOff: "\u0071" + readonly property string idAliasOn: "\u0072" + readonly property string infinity: "\u0073" + readonly property string keyframe: "\u0074" + readonly property string linkTriangle: "\u0075" + readonly property string linked: "\u0076" + readonly property string listView: "\u0077" + readonly property string lockOff: "\u0078" + readonly property string lockOn: "\u0079" + readonly property string materialPreviewEnvironment: "\u007A" + readonly property string materialPreviewModel: "\u007B" + readonly property string mergeCells: "\u007C" + readonly property string minus: "\u007D" + readonly property string mirror: "\u007E" + readonly property string newMaterial: "\u007F" + readonly property string openLink: "\u0080" + readonly property string openMaterialBrowser: "\u0081" + readonly property string orientation: "\u0082" + readonly property string paddingEdge: "\u0083" + readonly property string paddingFrame: "\u0084" + readonly property string pasteStyle: "\u0085" + readonly property string pause: "\u0086" + readonly property string pin: "\u0087" + readonly property string play: "\u0088" + readonly property string plus: "\u0089" + readonly property string promote: "\u008A" + readonly property string readOnly: "\u008B" + readonly property string redo: "\u008C" + readonly property string rotationFill: "\u008D" + readonly property string rotationOutline: "\u008E" + readonly property string search: "\u008F" + readonly property string sectionToggle: "\u0090" + readonly property string splitColumns: "\u0091" + readonly property string splitRows: "\u0092" + readonly property string startNode: "\u0093" + readonly property string testIcon: "\u0094" + readonly property string textAlignBottom: "\u0095" + readonly property string textAlignCenter: "\u0096" + readonly property string textAlignJustified: "\u0097" + readonly property string textAlignLeft: "\u0098" + readonly property string textAlignMiddle: "\u0099" + readonly property string textAlignRight: "\u009A" + readonly property string textAlignTop: "\u009B" + readonly property string textBulletList: "\u009D" + readonly property string textFullJustification: "\u009E" + readonly property string textNumberedList: "\u009F" + readonly property string tickIcon: "\u00A0" + readonly property string translationCreateFiles: "\u00A1" + readonly property string translationCreateReport: "\u00A2" + readonly property string translationExport: "\u00A3" + readonly property string translationImport: "\u00A4" + readonly property string translationSelectLanguages: "\u00A5" + readonly property string translationTest: "\u00A6" + readonly property string transparent: "\u00A7" + readonly property string triState: "\u00A8" + readonly property string triangleArcA: "\u00A9" + readonly property string triangleArcB: "\u00AA" + readonly property string triangleCornerA: "\u00AB" + readonly property string triangleCornerB: "\u00AC" + readonly property string unLinked: "\u00AE" + readonly property string undo: "\u00AF" + readonly property string unpin: "\u00B0" + readonly property string upDownIcon: "\u00B1" + readonly property string upDownSquare2: "\u00B2" + readonly property string visibilityOff: "\u00B3" + readonly property string visibilityOn: "\u00B4" + readonly property string wildcard: "\u00B5" + readonly property string wizardsAutomotive: "\u00B6" + readonly property string wizardsDesktop: "\u00B7" + readonly property string wizardsGeneric: "\u00B8" + readonly property string wizardsMcuEmpty: "\u00B9" + readonly property string wizardsMcuGraph: "\u00BA" + readonly property string wizardsMobile: "\u00BB" + readonly property string wizardsUnknown: "\u00BC" + readonly property string zoomAll: "\u00BD" + readonly property string zoomIn: "\u00BE" + readonly property string zoomOut: "\u00BF" + readonly property string zoomSelection: "\u00C0" readonly property font iconFont: Qt.font({ "family": controlIcons.name, diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/icons.ttf b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/icons.ttf Binary files differindex 39c600217b..acd8df6ce3 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/icons.ttf +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/icons.ttf diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp index d210721e09..07205b5c73 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp @@ -87,7 +87,7 @@ void AssetsLibraryModel::toggleExpandAll(bool expand) void AssetsLibraryModel::deleteFiles(const QStringList &filePaths) { - bool askBeforeDelete = DesignerSettings::getValue( + bool askBeforeDelete = QmlDesignerPlugin::settings().value( DesignerSettingsKey::ASK_BEFORE_DELETING_ASSET).toBool(); bool assetDelete = true; @@ -107,7 +107,7 @@ void AssetsLibraryModel::deleteFiles(const QStringList &filePaths) assetDelete = false; if (cb.isChecked()) - DesignerSettings::setValue(DesignerSettingsKey::ASK_BEFORE_DELETING_ASSET, false); + QmlDesignerPlugin::settings().insert(DesignerSettingsKey::ASK_BEFORE_DELETING_ASSET, false); } if (assetDelete) { diff --git a/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp b/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp index b75821869d..ba507e2458 100644 --- a/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp +++ b/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp @@ -232,6 +232,9 @@ void ActionEditor::prepareConnections() QmlJS::ValueOwner *interp = context->valueOwner(); const QmlJS::Value *value = interp->convertToObject(scopeChain.evaluate(expression)); + if (value->asNullValue() && !methodBlackList.contains(slotName)) + connection.methods.append(QString::fromUtf8(slotName)); + if (const QmlJS::FunctionValue *f = value->asFunctionValue()) { // Only add slots with zero arguments if (f->namedArgumentCount() == 0 && !methodBlackList.contains(slotName)) diff --git a/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp index 20d041d879..c9dad6aa66 100644 --- a/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp +++ b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp @@ -123,7 +123,7 @@ Utils::CrumblePath *CrumbleBar::crumblePath() bool CrumbleBar::showSaveDialog() { bool canceled = false; - bool alwaysSave = DesignerSettings::getValue(DesignerSettingsKey::ALWAYS_SAVE_IN_CRUMBLEBAR).toBool(); + bool alwaysSave = QmlDesignerPlugin::settings().value(DesignerSettingsKey::ALWAYS_SAVE_IN_CRUMBLEBAR).toBool(); if (alwaysSave) { Core::DocumentManager::saveModifiedDocumentSilently(currentDesignDocument()->editor()->document()); } else { @@ -133,7 +133,7 @@ bool CrumbleBar::showSaveDialog() tr("Always save when leaving subcomponent"), &alwaysSave); - DesignerSettings::setValue(DesignerSettingsKey::ALWAYS_SAVE_IN_CRUMBLEBAR, alwaysSave); + QmlDesignerPlugin::settings().insert(DesignerSettingsKey::ALWAYS_SAVE_IN_CRUMBLEBAR, alwaysSave); } return !canceled; } diff --git a/src/plugins/qmldesigner/components/componentcore/theme.h b/src/plugins/qmldesigner/components/componentcore/theme.h index be1a52d6b5..e9b751e49d 100644 --- a/src/plugins/qmldesigner/components/componentcore/theme.h +++ b/src/plugins/qmldesigner/components/componentcore/theme.h @@ -57,8 +57,10 @@ public: centerHorizontal, centerVertical, closeCross, + closeLink, colorPopupClose, columnsAndRows, + copyLink, copyStyle, cornerA, cornerB, @@ -114,6 +116,7 @@ public: minus, mirror, newMaterial, + openLink, openMaterialBrowser, orientation, paddingEdge, diff --git a/src/plugins/qmldesigner/components/connectioneditor/connectionviewwidget.cpp b/src/plugins/qmldesigner/components/connectioneditor/connectionviewwidget.cpp index 777f8e587f..0b1ec34a16 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/connectionviewwidget.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/connectionviewwidget.cpp @@ -74,8 +74,6 @@ ConnectionViewWidget::ConnectionViewWidget(QWidget *parent) : for (auto toolButton : buttons) ui->toolBar->addWidget(toolButton); - auto settings = QmlDesignerPlugin::instance()->settings(); - if (!QmlProjectManager::QmlProject::isQtDesignStudio()) ui->tabBar->addTab(tr("Backends", "Title of dynamic properties view")); diff --git a/src/plugins/qmldesigner/components/debugview/debugview.cpp b/src/plugins/qmldesigner/components/debugview/debugview.cpp index ef76e62bb3..547c6f580b 100644 --- a/src/plugins/qmldesigner/components/debugview/debugview.cpp +++ b/src/plugins/qmldesigner/components/debugview/debugview.cpp @@ -23,13 +23,13 @@ const QString lineBreak = QStringLiteral("<br>"); bool isDebugViewEnabled() { - return QmlDesigner::DesignerSettings::getValue( + return QmlDesigner::QmlDesignerPlugin::settings().value( QmlDesigner::DesignerSettingsKey::ENABLE_DEBUGVIEW).toBool(); } bool isDebugViewShown() { - return QmlDesigner::DesignerSettings::getValue( + return QmlDesigner::QmlDesignerPlugin::settings().value( QmlDesigner::DesignerSettingsKey::SHOW_DEBUGVIEW).toBool(); } diff --git a/src/plugins/qmldesigner/components/debugview/debugviewwidget.cpp b/src/plugins/qmldesigner/components/debugview/debugviewwidget.cpp index e75e1d640b..4010c82eb9 100644 --- a/src/plugins/qmldesigner/components/debugview/debugviewwidget.cpp +++ b/src/plugins/qmldesigner/components/debugview/debugviewwidget.cpp @@ -78,7 +78,7 @@ void DebugViewWidget::setDebugViewEnabled(bool b) void DebugViewWidget::enabledCheckBoxToggled(bool b) { - DesignerSettings::setValue(DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER, b); + QmlDesignerPlugin::settings().insert(DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER, b); } } //namespace Internal diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp index d9a0ad2824..47ace6a03c 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp @@ -630,7 +630,7 @@ void Edit3DView::createEdit3DActions() m_particlesRestartAction->action()->setEnabled(particlemode); if (m_seeker) m_seeker->setEnabled(false); - QmlDesigner::DesignerSettings::setValue("particleMode", particlemode); + QmlDesignerPlugin::settings().insert("particleMode", particlemode); setCurrentStateNode(rootModelNode()); resetPuppet(); }; diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dviewconfig.h b/src/plugins/qmldesigner/components/edit3d/edit3dviewconfig.h index 0f2a670148..2bee2d2b3b 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dviewconfig.h +++ b/src/plugins/qmldesigner/components/edit3d/edit3dviewconfig.h @@ -16,7 +16,7 @@ class Edit3DViewConfig public: static QList<QColor> load(const char key[]) { - QVariant var = DesignerSettings::getValue(key); + QVariant var = QmlDesignerPlugin::settings().value(key); if (!var.isValid()) return {}; @@ -65,7 +65,7 @@ private: static void saveVariant(const QByteArray &key, const QVariant &colorConfig) { - DesignerSettings::setValue(key, colorConfig); + QmlDesignerPlugin::settings().insert(key, colorConfig); } }; diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp index 27e88f8ca0..4c1b0ddef1 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp @@ -73,12 +73,12 @@ FormEditorItem* FormEditorScene::itemForQmlItemNode(const QmlItemNode &qmlItemNo double FormEditorScene::canvasWidth() const { - return DesignerSettings::getValue(DesignerSettingsKey::CANVASWIDTH).toDouble(); + return QmlDesignerPlugin::settings().value(DesignerSettingsKey::CANVASWIDTH).toDouble(); } double FormEditorScene::canvasHeight() const { - return DesignerSettings::getValue(DesignerSettingsKey::CANVASHEIGHT).toDouble(); + return QmlDesignerPlugin::settings().value(DesignerSettingsKey::CANVASHEIGHT).toDouble(); } QList<FormEditorItem*> FormEditorScene::itemsForQmlItemNodes(const QList<QmlItemNode> &nodeList) const diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index dac9ffd8c6..41b8aed4d2 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -15,6 +15,7 @@ #include "abstractcustomtool.h" #include <auxiliarydataproperties.h> +#include <qmldesignerplugin.h> #include <bindingproperty.h> #include <designersettings.h> #include <designmodecontext.h> @@ -689,8 +690,8 @@ constexpr AuxiliaryDataKeyView autoSizeProperty{AuxiliaryDataType::Temporary, "a void FormEditorView::instanceInformationsChanged(const QMultiHash<ModelNode, InformationName> &informationChangedHash) { QList<FormEditorItem*> changedItems; - const int rootElementInitWidth = DesignerSettings::getValue(DesignerSettingsKey::ROOT_ELEMENT_INIT_WIDTH).toInt(); - const int rootElementInitHeight = DesignerSettings::getValue(DesignerSettingsKey::ROOT_ELEMENT_INIT_HEIGHT).toInt(); + const int rootElementInitWidth = QmlDesignerPlugin::settings().value(DesignerSettingsKey::ROOT_ELEMENT_INIT_WIDTH).toInt(); + const int rootElementInitHeight = QmlDesignerPlugin::settings().value(DesignerSettingsKey::ROOT_ELEMENT_INIT_HEIGHT).toInt(); QList<ModelNode> informationChangedNodes = Utils::filtered(informationChangedHash.keys(), [](const ModelNode &node) { return QmlItemNode::isValidQmlItemNode(node); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp index 9f05aa9325..34ad852320 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp @@ -469,12 +469,12 @@ ToolBox *FormEditorWidget::toolBox() const double FormEditorWidget::spacing() const { - return DesignerSettings::getValue(DesignerSettingsKey::ITEMSPACING).toDouble(); + return QmlDesignerPlugin::settings().value(DesignerSettingsKey::ITEMSPACING).toDouble(); } double FormEditorWidget::containerPadding() const { - return DesignerSettings::getValue(DesignerSettingsKey::CONTAINERPADDING).toDouble(); + return QmlDesignerPlugin::settings().value(DesignerSettingsKey::CONTAINERPADDING).toDouble(); } void FormEditorWidget::contextHelp(const Core::IContext::HelpCallback &callback) const diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 1737b79ac7..5a359693f2 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -263,7 +263,7 @@ void ItemLibraryWidget::goIntoComponent(const QString &source) void ItemLibraryWidget::delayedUpdateModel() { - static bool disableTimer = DesignerSettings::getValue(DesignerSettingsKey::DISABLE_ITEM_LIBRARY_UPDATE_TIMER).toBool(); + static bool disableTimer = QmlDesignerPlugin::settings().value(DesignerSettingsKey::DISABLE_ITEM_LIBRARY_UPDATE_TIMER).toBool(); if (disableTimer) updateModel(); else diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp index 3fa49a266b..dd789f7c6b 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp @@ -136,10 +136,10 @@ void NavigatorView::modelAttached(Model *model) QTimer::singleShot(0, this, [this, treeView]() { m_currentModelInterface->setFilter( - DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool()); + QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool()); m_currentModelInterface->setOrder( - DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool()); + QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool()); // Expand everything to begin with to ensure model node to index cache is populated treeView->expandAll(); @@ -501,7 +501,7 @@ void NavigatorView::rightButtonClicked() return; //Semantics are unclear for multi selection. bool blocked = blockSelectionChangedSignal(true); - bool reverse = DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool(); + bool reverse = QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool(); for (const ModelNode &node : selectedModelNodes()) { if (!node.isRootNode() && node.parentProperty().isNodeListProperty() && node.parentProperty().count() > 1) { @@ -541,7 +541,7 @@ void NavigatorView::rightButtonClicked() void NavigatorView::upButtonClicked() { bool blocked = blockSelectionChangedSignal(true); - bool reverse = DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool(); + bool reverse = QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool(); if (reverse) moveNodesDown(selectedModelNodes()); @@ -555,7 +555,7 @@ void NavigatorView::upButtonClicked() void NavigatorView::downButtonClicked() { bool blocked = blockSelectionChangedSignal(true); - bool reverse = DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool(); + bool reverse = QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool(); if (reverse) moveNodesUp(selectedModelNodes()); @@ -570,14 +570,14 @@ void NavigatorView::filterToggled(bool flag) { m_currentModelInterface->setFilter(flag); treeWidget()->expandAll(); - DesignerSettings::setValue(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS, flag); + QmlDesignerPlugin::settings().insert(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS, flag); } void NavigatorView::reverseOrderToggled(bool flag) { m_currentModelInterface->setOrder(flag); treeWidget()->expandAll(); - DesignerSettings::setValue(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER, flag); + QmlDesignerPlugin::settings().insert(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER, flag); } void NavigatorView::textFilterChanged(const QString &text) diff --git a/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp b/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp index aa91f22ae1..1630a6a4ce 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp @@ -116,7 +116,7 @@ QList<QToolButton *> NavigatorWidget::createToolBarWidgets() auto filterAction = new QAction(tr("Show Only Visible Components"), nullptr); filterAction->setCheckable(true); - bool filterFlag = DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool(); + bool filterFlag = QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool(); filterAction->setChecked(filterFlag); connect(filterAction, &QAction::toggled, this, &NavigatorWidget::filterToggled); @@ -125,7 +125,7 @@ QList<QToolButton *> NavigatorWidget::createToolBarWidgets() auto reverseAction = new QAction(tr("Reverse Component Order"), nullptr); reverseAction->setCheckable(true); - bool reverseFlag = DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool(); + bool reverseFlag = QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool(); reverseAction->setChecked(reverseFlag); connect(reverseAction, &QAction::toggled, this, &NavigatorWidget::reverseOrderToggled); diff --git a/src/plugins/qmldesigner/components/propertyeditor/colorpalettebackend.h b/src/plugins/qmldesigner/components/propertyeditor/colorpalettebackend.h index 61050449d9..8cb14dbdaa 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/colorpalettebackend.h +++ b/src/plugins/qmldesigner/components/propertyeditor/colorpalettebackend.h @@ -13,6 +13,7 @@ #include <QPixmap> #include "designersettings.h" +#include <qmldesignerplugin.h> #include <coreplugin/icore.h> namespace QmlDesigner { @@ -37,7 +38,7 @@ struct Palette bool read() { - QStringList data = QmlDesigner::DesignerSettings::getValue(m_settingsKey).toStringList(); + QStringList data = QmlDesignerPlugin::settings().value(m_settingsKey).toStringList(); if (data.isEmpty()) return false; @@ -49,7 +50,7 @@ struct Palette void write() const { - QmlDesigner::DesignerSettings::setValue(m_settingsKey, m_colors); + QmlDesignerPlugin::settings().insert(m_settingsKey, m_colors); } QByteArray m_settingsKey; diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp b/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp index 912263ea8d..54ed7d50d2 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp +++ b/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp @@ -246,7 +246,7 @@ void TextEditorView::reformatFile() // Reformat document if we have a .ui.qml file if (document && document->filePath().toString().endsWith(".ui.qml") - && DesignerSettings::getValue(DesignerSettingsKey::REFORMAT_UI_QML_FILES).toBool()) { + && QmlDesignerPlugin::settings().value(DesignerSettingsKey::REFORMAT_UI_QML_FILES).toBool()) { QmlJS::Document::Ptr currentDocument(document->semanticInfo().document); QmlJS::Snapshot snapshot = QmlJS::ModelManagerInterface::instance()->snapshot(); diff --git a/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp b/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp index 7b2e4978ab..b410c2bd2f 100644 --- a/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp +++ b/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp @@ -28,15 +28,14 @@ void InteractiveConnectionManager::setUp(NodeInstanceServerInterface *nodeInstan { ConnectionManager::setUp(nodeInstanceServer, qrcMappingString, target, view); - DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - int timeOutTime = settings.value(DesignerSettingsKey::PUPPET_KILL_TIMEOUT).toInt(); + int timeOutTime = QmlDesignerPlugin::settings() + .value(DesignerSettingsKey::PUPPET_KILL_TIMEOUT).toInt(); for (Connection &connection : connections()) { connection.timer.reset(new QTimer); connection.timer->setInterval(timeOutTime); } - if (QmlDesignerPlugin::instance() - ->settings() + if (QmlDesignerPlugin::settings() .value(DesignerSettingsKey::DEBUG_PUPPET) .toString() .isEmpty()) { diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index 9e66f9e04a..cc4703b2f0 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -127,7 +127,7 @@ bool PuppetCreator::useOnlyFallbackPuppet() const #ifndef QMLDESIGNER_TEST if (!m_target || !m_target->kit()->isValid()) qWarning() << "Invalid kit for QML puppet"; - return m_designerSettings.value(DesignerSettingsKey::USE_DEFAULT_PUPPET).toBool() + return QmlDesignerPlugin::settings().value(DesignerSettingsKey::USE_DEFAULT_PUPPET).toBool() || m_target == nullptr || !m_target->kit()->isValid(); #else return true; @@ -166,9 +166,6 @@ PuppetCreator::PuppetCreator(ProjectExplorer::Target *target, const Model *model : m_target(target) , m_availablePuppetType(FallbackPuppet) , m_model(model) -#ifndef QMLDESIGNER_TEST - , m_designerSettings(QmlDesignerPlugin::instance()->settings()) -#endif { } @@ -210,7 +207,7 @@ QProcessUniquePointer PuppetCreator::puppetProcess( processFinishCallback); #ifndef QMLDESIGNER_TEST - QString forwardOutput = m_designerSettings.value(DesignerSettingsKey:: + QString forwardOutput = QmlDesignerPlugin::settings().value(DesignerSettingsKey:: FORWARD_PUPPET_OUTPUT).toString(); #else QString forwardOutput("all"); @@ -243,7 +240,7 @@ QProcessUniquePointer PuppetCreator::puppetProcess( } #ifndef QMLDESIGNER_TEST - QString debugPuppet = m_designerSettings.value(DesignerSettingsKey:: + QString debugPuppet = QmlDesignerPlugin::settings().value(DesignerSettingsKey:: DEBUG_PUPPET).toString(); #else QString debugPuppet("all"); @@ -393,7 +390,7 @@ QString PuppetCreator::defaultPuppetToplevelBuildDirectory() QString PuppetCreator::qmlPuppetToplevelBuildDirectory() const { #ifndef QMLDESIGNER_TEST - QString puppetToplevelBuildDirectory = m_designerSettings.value( + QString puppetToplevelBuildDirectory = QmlDesignerPlugin::settings().value( DesignerSettingsKey::PUPPET_TOPLEVEL_BUILD_DIRECTORY).toString(); if (puppetToplevelBuildDirectory.isEmpty()) return defaultPuppetToplevelBuildDirectory(); @@ -413,7 +410,7 @@ QString PuppetCreator::qmlPuppetDirectory(PuppetType puppetType) const if (puppetType == BinPathPuppet) return pathForBinPuppet(m_target).toFileInfo().absoluteDir().canonicalPath(); - return qmlPuppetFallbackDirectory(m_designerSettings); + return qmlPuppetFallbackDirectory(QmlDesignerPlugin::settings()); #else return QString(); #endif @@ -475,10 +472,10 @@ QProcessEnvironment PuppetCreator::processEnvironment() const environment.set("QT_AUTO_SCREEN_SCALE_FACTOR", "1"); #ifndef QMLDESIGNER_TEST - const QString controlsStyle = m_designerSettings.value(DesignerSettingsKey:: + const QString controlsStyle = QmlDesignerPlugin::settings().value(DesignerSettingsKey:: CONTROLS_STYLE).toString(); - const bool smoothRendering = m_designerSettings.value(DesignerSettingsKey::SMOOTH_RENDERING) + const bool smoothRendering = QmlDesignerPlugin::settings().value(DesignerSettingsKey::SMOOTH_RENDERING) .toBool(); if (smoothRendering) @@ -525,7 +522,7 @@ QProcessEnvironment PuppetCreator::processEnvironment() const environment.set("QMLDESIGNER_FORCE_QAPPLICATION", "true"); } - bool particlemode = QmlDesigner::DesignerSettings::getValue("particleMode").toBool(); + bool particlemode = QmlDesigner::QmlDesignerPlugin::settings().value("particleMode").toBool(); if (!particlemode) environment.set("QT_QUICK3D_DISABLE_PARTICLE_SYSTEMS", "1"); else diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.h b/src/plugins/qmldesigner/designercore/instances/puppetcreator.h index aec17c054d..d61005b95b 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.h +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.h @@ -86,9 +86,6 @@ private: PuppetType m_availablePuppetType; static QHash<Utils::Id, PuppetType> m_qml2PuppetForKitPuppetHash; const Model *m_model = nullptr; -#ifndef QMLDESIGNER_TEST - const DesignerSettings m_designerSettings; -#endif QString m_qrcMapping; }; diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index 95cab9b15a..110edcca50 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -1367,12 +1367,22 @@ WriteLocker::WriteLocker(Model *model) WriteLocker::~WriteLocker() { if (!m_model->m_writeLock) - qWarning() << "QmlDesigner: Misbehaving view calls back to model!!!"; + qWarning() << "QmlDesigner: WriterLocker out of sync!!!"; // FIXME: Enable it again Q_ASSERT(m_model->m_writeLock); m_model->m_writeLock = false; } +void WriteLocker::unlock(Model *model) +{ + model->d->m_writeLock = false; +} + +void WriteLocker::lock(Model *model) +{ + model->d->m_writeLock = true; +} + } // namespace Internal Model::Model(ProjectStorage<Sqlite::Database> &projectStorage, diff --git a/src/plugins/qmldesigner/designercore/model/model_p.h b/src/plugins/qmldesigner/designercore/model/model_p.h index 51b94cb0ec..fb7cd47972 100644 --- a/src/plugins/qmldesigner/designercore/model/model_p.h +++ b/src/plugins/qmldesigner/designercore/model/model_p.h @@ -57,6 +57,9 @@ public: WriteLocker(ModelPrivate *model); ~WriteLocker(); + static void unlock(Model *model); + static void lock(Model *model); + private: QPointer<ModelPrivate> m_model; }; diff --git a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp index 23a4b2b18f..3bb73e586e 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp @@ -662,10 +662,10 @@ QString QmlObjectNode::generateTranslatableText([[maybe_unused]] const QString & { #ifndef QMLDESIGNER_TEST - if (QmlDesignerPlugin::instance()->settings().value( + if (QmlDesignerPlugin::settings().value( DesignerSettingsKey::TYPE_OF_QSTR_FUNCTION).toInt()) - switch (QmlDesignerPlugin::instance()->settings().value( + switch (QmlDesignerPlugin::settings().value( DesignerSettingsKey::TYPE_OF_QSTR_FUNCTION).toInt()) { case 0: return QString(QStringLiteral("qsTr(\"%1\")")).arg(text); case 1: return QString(QStringLiteral("qsTrId(\"%1\")")).arg(text); diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index c6a3ca8b2c..ae9aefae60 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -6,17 +6,18 @@ #include "texttomodelmerger.h" #include "modeltotextmerger.h" -#include <variantproperty.h> #include <bindingproperty.h> -#include <rewritingexception.h> -#include <signalhandlerproperty.h> +#include <customnotifications.h> #include <filemanager/astobjecttextextractor.h> -#include <filemanager/objectlengthcalculator.h> #include <filemanager/firstdefinitionfinder.h> -#include <customnotifications.h> -#include <modelnodepositionstorage.h> +#include <filemanager/objectlengthcalculator.h> +#include <model_p.h> #include <modelnode.h> +#include <modelnodepositionstorage.h> #include <nodeproperty.h> +#include <rewritingexception.h> +#include <signalhandlerproperty.h> +#include <variantproperty.h> #include <qmlobjectnode.h> #include <qmltimelinekeyframegroup.h> @@ -755,7 +756,9 @@ void RewriterView::resetToLastCorrectQml() m_textModifier->textDocument()->undo(); m_textModifier->textDocument()->clearUndoRedoStacks(QTextDocument::RedoStack); ModelAmender differenceHandler(m_textToModelMerger.data()); + Internal::WriteLocker::unlock(model()); m_textToModelMerger->load(m_textModifier->text(), differenceHandler); + Internal::WriteLocker::lock(model()); leaveErrorState(); } diff --git a/src/plugins/qmldesigner/designersettings.cpp b/src/plugins/qmldesigner/designersettings.cpp index 4de691f655..874adf8e8f 100644 --- a/src/plugins/qmldesigner/designersettings.cpp +++ b/src/plugins/qmldesigner/designersettings.cpp @@ -3,8 +3,6 @@ #include "designersettings.h" -#include <qmldesignerplugin.h> - #include <QSettings> namespace QmlDesigner { @@ -14,11 +12,35 @@ namespace DesignerSettingsGroupKey { const char QML_DESIGNER_SETTINGS_GROUP[] = "Designer"; } -DesignerSettings::DesignerSettings() = default; +DesignerSettings::DesignerSettings(QSettings *settings) : + m_settings(settings) +{ + fromSettings(settings); +} + +void DesignerSettings::insert(const QByteArray &key, const QVariant &value) +{ + QMutexLocker locker(&m_mutex); + m_cache.insert(key, value); + toSettings(m_settings); +} + +void DesignerSettings::insert(const QHash<QByteArray, QVariant> &settingsHash) +{ + QMutexLocker locker(&m_mutex); + m_cache.insert(settingsHash); + toSettings(m_settings); +} + +QVariant DesignerSettings::value(const QByteArray &key, const QVariant &defaultValue) const +{ + QMutexLocker locker(&m_mutex); + return m_cache.value(key); +} void DesignerSettings::restoreValue(QSettings *settings, const QByteArray &key, const QVariant &defaultValue) { - insert(key, settings->value(QString::fromLatin1(key), defaultValue)); + m_cache.insert(key, settings->value(QString::fromLatin1(key), defaultValue)); } void DesignerSettings::fromSettings(QSettings *settings) @@ -58,8 +80,8 @@ void DesignerSettings::fromSettings(QSettings *settings) restoreValue(settings, DesignerSettingsKey::ALWAYS_DESIGN_MODE, true); restoreValue(settings, DesignerSettingsKey::DISABLE_ITEM_LIBRARY_UPDATE_TIMER, false); restoreValue(settings, DesignerSettingsKey::ASK_BEFORE_DELETING_ASSET, true); - const QStringList defaultValue = QStringList() << "#222222" << "#999999"; - restoreValue(settings, DesignerSettingsKey::EDIT3DVIEW_BACKGROUND_COLOR, defaultValue); + restoreValue(settings, DesignerSettingsKey::EDIT3DVIEW_BACKGROUND_COLOR, + QStringList{"#222222", "#999999"}); restoreValue(settings, DesignerSettingsKey::EDIT3DVIEW_GRID_COLOR, "#aaaaaa"); restoreValue(settings, DesignerSettingsKey::SMOOTH_RENDERING, false); restoreValue(settings, DesignerSettingsKey::SHOW_DEBUG_SETTINGS, false); @@ -81,8 +103,8 @@ void DesignerSettings::toSettings(QSettings *settings) const settings->beginGroup(QLatin1String(DesignerSettingsGroupKey::QML_SETTINGS_GROUP)); settings->beginGroup(QLatin1String(DesignerSettingsGroupKey::QML_DESIGNER_SETTINGS_GROUP)); - QHash<QByteArray, QVariant>::const_iterator i = constBegin(); - while (i != constEnd()) { + QHash<QByteArray, QVariant>::const_iterator i = m_cache.constBegin(); + while (i != m_cache.constEnd()) { storeValue(settings, i.key(), i.value()); ++i; } @@ -91,17 +113,4 @@ void DesignerSettings::toSettings(QSettings *settings) const settings->endGroup(); } -QVariant DesignerSettings::getValue(const QByteArray &key) -{ - DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - return settings.value(key); -} - -void DesignerSettings::setValue(const QByteArray &key, const QVariant &value) -{ - DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - settings.insert(key, value); - QmlDesignerPlugin::instance()->setSettings(settings); -} - } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designersettings.h b/src/plugins/qmldesigner/designersettings.h index 9922f6cd6e..4f2543536d 100644 --- a/src/plugins/qmldesigner/designersettings.h +++ b/src/plugins/qmldesigner/designersettings.h @@ -8,6 +8,7 @@ #include <QHash> #include <QVariant> #include <QByteArray> +#include <QMutex> QT_BEGIN_NAMESPACE class QSettings; @@ -55,19 +56,25 @@ const char SMOOTH_RENDERING[] = "SmoothRendering"; const char OLD_STATES_EDITOR[] = "OldStatesEditor"; } -class QMLDESIGNERCORE_EXPORT DesignerSettings : public QHash<QByteArray, QVariant> +class QMLDESIGNERCORE_EXPORT DesignerSettings { public: - DesignerSettings(); + DesignerSettings(QSettings *settings); + void insert(const QByteArray &key, const QVariant &value); + void insert(const QHash<QByteArray, QVariant> &settingsHash); + QVariant value(const QByteArray &key, const QVariant &defaultValue = {}) const; + +private: void fromSettings(QSettings *); void toSettings(QSettings *) const; - static QVariant getValue(const QByteArray &key); - static void setValue(const QByteArray &key, const QVariant &value); -private: void restoreValue(QSettings *settings, const QByteArray &key, const QVariant &defaultValue = QVariant()); void storeValue(QSettings *settings, const QByteArray &key, const QVariant &value) const; + + QSettings *m_settings; + QHash<QByteArray, QVariant> m_cache; + mutable QMutex m_mutex; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/documentwarningwidget.cpp b/src/plugins/qmldesigner/documentwarningwidget.cpp index 64526a1127..83fb8095f7 100644 --- a/src/plugins/qmldesigner/documentwarningwidget.cpp +++ b/src/plugins/qmldesigner/documentwarningwidget.cpp @@ -178,12 +178,12 @@ void DocumentWarningWidget::emitGotoCodeClicked(const DocumentMessage &message) bool DocumentWarningWidget::warningsEnabled() const { - return DesignerSettings::getValue(DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER).toBool(); + return QmlDesignerPlugin::settings().value(DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER).toBool(); } void DocumentWarningWidget::ignoreCheckBoxToggled(bool b) { - DesignerSettings::setValue(DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER, !b); + QmlDesignerPlugin::settings().value(DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER, !b); } void DocumentWarningWidget::setErrors(const QList<DocumentMessage> &errors) diff --git a/src/plugins/qmldesigner/openuiqmlfiledialog.cpp b/src/plugins/qmldesigner/openuiqmlfiledialog.cpp index 6d42fd0560..536f813f73 100644 --- a/src/plugins/qmldesigner/openuiqmlfiledialog.cpp +++ b/src/plugins/qmldesigner/openuiqmlfiledialog.cpp @@ -33,9 +33,8 @@ OpenUiQmlFileDialog::OpenUiQmlFileDialog(QWidget *parent) : close(); }); connect(ui->checkBox, &QCheckBox::toggled, this, [](bool b){ - DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - settings.insert(DesignerSettingsKey::WARNING_FOR_QML_FILES_INSTEAD_OF_UIQML_FILES, !b); - QmlDesignerPlugin::instance()->setSettings(settings); + QmlDesignerPlugin::settings().insert( + DesignerSettingsKey::WARNING_FOR_QML_FILES_INSTEAD_OF_UIQML_FILES, !b); }); } diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index f2ae163bdf..09ad17e0f6 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -102,7 +102,7 @@ QtQuickDesignerFactory::QtQuickDesignerFactory() setDocumentCreator([this]() { auto document = new QmlJSEditor::QmlJSEditorDocument(id()); document->setIsDesignModePreferred( - QmlDesigner::DesignerSettings::getValue( + QmlDesigner::QmlDesignerPlugin::settings().value( QmlDesigner::DesignerSettingsKey::ALWAYS_DESIGN_MODE).toBool()); return document; }); @@ -113,13 +113,13 @@ QtQuickDesignerFactory::QtQuickDesignerFactory() class QmlDesignerPluginPrivate { public: + DesignerSettings settings{Core::ICore::instance()->settings()}; QmlDesignerProjectManager projectManager; ViewManager viewManager{projectManager.asynchronousImageCache()}; DocumentManager documentManager{projectManager}; ShortCutManager shortCutManager; SettingsPage settingsPage; DesignModeWidget mainWidget; - DesignerSettings settings; QtQuickDesignerFactory m_qtQuickDesignerFactory; bool blockEditorChange = false; }; @@ -174,7 +174,7 @@ static bool shouldAssertInException() static bool warningsForQmlFilesInsteadOfUiQmlEnabled() { - return DesignerSettings::getValue(DesignerSettingsKey::WARNING_FOR_QML_FILES_INSTEAD_OF_UIQML_FILES).toBool(); + return QmlDesignerPlugin::settings().value(DesignerSettingsKey::WARNING_FOR_QML_FILES_INSTEAD_OF_UIQML_FILES).toBool(); } QmlDesignerPlugin::QmlDesignerPlugin() @@ -281,8 +281,6 @@ bool QmlDesignerPlugin::delayedInitialize() }); MetaInfo::setPluginPaths(pluginPaths); - d->settings.fromSettings(Core::ICore::settings()); - d->viewManager.registerView(std::make_unique<QmlDesigner::Internal::ConnectionView>()); auto timelineView = d->viewManager.registerView(std::make_unique<QmlDesigner::TimelineView>()); @@ -629,7 +627,7 @@ void QmlDesignerPlugin::emitCurrentTextEditorChanged(Core::IEditor *editor) double QmlDesignerPlugin::formEditorDevicePixelRatio() { - if (DesignerSettings::getValue(DesignerSettingsKey::IGNORE_DEVICE_PIXEL_RATIO).toBool()) + if (QmlDesignerPlugin::settings().value(DesignerSettingsKey::IGNORE_DEVICE_PIXEL_RATIO).toBool()) return 1; const QList<QWindow *> topLevelWindows = QApplication::topLevelWindows(); @@ -737,18 +735,9 @@ const DesignerActionManager &QmlDesignerPlugin::designerActionManager() const return d->viewManager.designerActionManager(); } -DesignerSettings QmlDesignerPlugin::settings() +DesignerSettings& QmlDesignerPlugin::settings() { - d->settings.fromSettings(Core::ICore::settings()); - return d->settings; -} - -void QmlDesignerPlugin::setSettings(const DesignerSettings &s) -{ - if (s != d->settings) { - d->settings = s; - d->settings.toSettings(Core::ICore::settings()); - } + return instance()->d->settings; } } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/qmldesignerplugin.h b/src/plugins/qmldesigner/qmldesignerplugin.h index 9be209ba40..817f886afb 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.h +++ b/src/plugins/qmldesigner/qmldesignerplugin.h @@ -53,8 +53,7 @@ public: DesignerActionManager &designerActionManager(); const DesignerActionManager &designerActionManager() const; - DesignerSettings settings(); - void setSettings(const DesignerSettings &s); + static DesignerSettings& settings(); DesignDocument *currentDesignDocument() const; Internal::DesignModeWidget *mainWidget() const; diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs index c6989823f6..a5e6af7e64 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.qbs +++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs @@ -828,18 +828,26 @@ Project { "stateseditor/stateseditorview.h", "stateseditor/stateseditorwidget.cpp", "stateseditor/stateseditorwidget.h", - "stateseditornew/propertychangesmodel.cpp", - "stateseditornew/propertychangesmodel.h", - "stateseditornew/propertymodel.cpp", - "stateseditornew/propertymodel.h", - "stateseditornew/stateseditorimageprovider.cpp", - "stateseditornew/stateseditorimageprovider.h", - "stateseditornew/stateseditormodel.cpp", - "stateseditornew/stateseditormodel.h", - "stateseditornew/stateseditorview.cpp", - "stateseditornew/stateseditorview.h", - "stateseditornew/stateseditorwidget.cpp", - "stateseditornew/stateseditorwidget.h", + ] + } + + Group { + name: "new states editor" + prefix: "components/stateseditornew/" + Qt.core.generatedHeadersDir: product.buildDirectory + "/qt.headers/stateseditornew" + files: [ + "propertychangesmodel.cpp", + "propertychangesmodel.h", + "propertymodel.cpp", + "propertymodel.h", + "stateseditorimageprovider.cpp", + "stateseditorimageprovider.h", + "stateseditormodel.cpp", + "stateseditormodel.h", + "stateseditorview.cpp", + "stateseditorview.h", + "stateseditorwidget.cpp", + "stateseditorwidget.h", ] } diff --git a/src/plugins/qmldesigner/settingspage.cpp b/src/plugins/qmldesigner/settingspage.cpp index 48c0c6d354..060a562788 100644 --- a/src/plugins/qmldesigner/settingspage.cpp +++ b/src/plugins/qmldesigner/settingspage.cpp @@ -41,7 +41,7 @@ public: void apply() final; - DesignerSettings settings() const; + QHash<QByteArray, QVariant> newSettings() const; void setSettings(const DesignerSettings &settings); private: @@ -86,9 +86,9 @@ SettingsPageWidget::SettingsPageWidget() setSettings(QmlDesignerPlugin::instance()->settings()); } -DesignerSettings SettingsPageWidget::settings() const +QHash<QByteArray, QVariant> SettingsPageWidget::newSettings() const { - DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); + QHash<QByteArray, QVariant> settings; settings.insert(DesignerSettingsKey::ITEMSPACING, m_ui.spinItemSpacing->value()); settings.insert(DesignerSettingsKey::CONTAINERPADDING, m_ui.spinSnapMargin->value()); settings.insert(DesignerSettingsKey::CANVASWIDTH, m_ui.spinCanvasWidth->value()); @@ -132,7 +132,8 @@ DesignerSettings SettingsPageWidget::settings() const m_ui.fallbackPuppetPathLineEdit->lineEdit()->placeholderText()); if (newFallbackPuppetPath.isEmpty()) newFallbackPuppetPath = m_ui.fallbackPuppetPathLineEdit->lineEdit()->placeholderText(); - QString oldFallbackPuppetPath = PuppetCreator::qmlPuppetFallbackDirectory(settings); + + QString oldFallbackPuppetPath = PuppetCreator::qmlPuppetFallbackDirectory(QmlDesignerPlugin::settings()); if (oldFallbackPuppetPath != newFallbackPuppetPath && QFileInfo::exists(newFallbackPuppetPath)) { if (newFallbackPuppetPath == PuppetCreator::defaultPuppetFallbackDirectory()) @@ -248,8 +249,7 @@ void SettingsPageWidget::setSettings(const DesignerSettings &settings) void SettingsPageWidget::apply() { - DesignerSettings currentSettings(QmlDesignerPlugin::instance()->settings()); - DesignerSettings newSettings = settings(); + auto settings = newSettings(); const auto restartNecessaryKeys = { DesignerSettingsKey::PUPPET_DEFAULT_DIRECTORY, @@ -263,7 +263,7 @@ void SettingsPageWidget::apply() }; for (const char * const key : restartNecessaryKeys) { - if (currentSettings.value(key) != newSettings.value(key)) { + if (QmlDesignerPlugin::settings().value(key) != settings.value(key)) { QMessageBox::information(Core::ICore::dialogParent(), tr("Restart Required"), tr("The made changes will take effect after a " "restart of the QML Emulation layer or %1.") @@ -272,7 +272,7 @@ void SettingsPageWidget::apply() } } - QmlDesignerPlugin::instance()->setSettings(newSettings); + QmlDesignerPlugin::settings().insert(settings); } SettingsPage::SettingsPage() diff --git a/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml b/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml index e6bedf2074..4809612d84 100644 --- a/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml +++ b/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml @@ -233,56 +233,6 @@ Rectangle { } Row { - y: 690 - visible: false - anchors.horizontalCenter: parent.horizontalCenter - spacing: 20 - layoutDirection: Qt.LeftToRight - - CheckBox { - visible: true - id: usageStatisticCheckBox - text: qsTr("Send Usage Statistics") - checked: usageStatisticModel.usageStatisticEnabled - padding: 0 - spacing: 12 - - onCheckedChanged: usageStatisticModel.setTelemetryEnabled( - usageStatisticCheckBox.checked) - - contentItem: Text { - text: usageStatisticCheckBox.text - color: "#ffffff" - leftPadding: usageStatisticCheckBox.indicator.width + usageStatisticCheckBox.spacing - font.pixelSize: 12 - } - } - - CheckBox { - visible: true - id: crashReportCheckBox - text: qsTr("Send Crash Reports") - spacing: 12 - checked: usageStatisticModel.crashReporterEnabled - - onCheckedChanged: { - usageStatisticModel.setCrashReporterEnabled( - crashReportCheckBox.checked) - welcome_splash.onPluginInitialized(true, - crashReportCheckBox.checked) - } - - contentItem: Text { - color: "#ffffff" - text: crashReportCheckBox.text - leftPadding: crashReportCheckBox.indicator.width + crashReportCheckBox.spacing - font.pixelSize: 12 - } - padding: 0 - } - } - - Row { id: designStudioVersion anchors.top: logo.bottom anchors.topMargin: 5 diff --git a/src/plugins/studiowelcome/qml/splashscreen/main.qml b/src/plugins/studiowelcome/qml/splashscreen/main.qml index 3d453fe85e..3428fea6da 100644 --- a/src/plugins/studiowelcome/qml/splashscreen/main.qml +++ b/src/plugins/studiowelcome/qml/splashscreen/main.qml @@ -5,6 +5,14 @@ import QtQuick 2.0 Item { id: root + + focus: true + Keys.onPressed: (event)=> { + if (event.key == Qt.Key_Escape) + root.doNotShowAgain = false + root.closeClicked() + } + width: 600 * root.mainScale height: 720 * root.mainScale diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp index 614da817df..faf17d5f62 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp +++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp @@ -557,6 +557,7 @@ void StudioWelcomePlugin::extensionsInitialized() s_view->show(); s_view->raise(); + s_view->setFocus(); }); } } |