From 52efe453548a31e32662c7dbc0d98dc6ccb1b7af Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 7 May 2021 16:55:24 +0200 Subject: [PATCH 01/11] QmlDesigner: Allow functions of animations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For some reason we get nullValue for the functions of animations like 'update', 'start', 'restart', 'stop', 'pause'. Change-Id: I2301083d6d61e2f8f59e5878023cac0fcf711e61 Reviewed-by: Qt CI Bot Reviewed-by: Henning Gründl --- .../qmldesigner/components/bindingeditor/actioneditor.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp b/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp index ce4f124d340..21d7b37e9f2 100644 --- a/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp +++ b/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp @@ -240,6 +240,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)) From 73c912a458df8cbdf5d1049e065def4f8fb378f0 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 21 Sep 2022 11:26:53 +0200 Subject: [PATCH 02/11] QmlDesigner: Do not reset load if count changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is not required to leads to a quadratic slow-down if there are many properties. There is still a slight lag if there are more than 20 properties, but QDS stays fully usable. Change-Id: Ife14e97d127b16a1ae59e97a8fa642f5a2479e53 Reviewed-by: Reviewed-by: Henning Gründl --- .../imports/HelperWidgets/DynamicPropertiesSection.qml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/DynamicPropertiesSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/DynamicPropertiesSection.qml index 2a0580edf14..fedf76bdbbe 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 { From 93d4b057cf5766c9ec0b5f6f13f907dfdbd6d63a Mon Sep 17 00:00:00 2001 From: Knud Dollereder Date: Wed, 21 Sep 2022 13:22:34 +0200 Subject: [PATCH 03/11] Check for more dirty flags This fixes an issue of the formeditor which did not update properly if components contain items that have one of zvalue, opacity or visibility attributes animated. Change-Id: I1b20f09177878419b2b18aaf94c84b6ae437be7d Reviewed-by: Thomas Hartmann Reviewed-by: Qt CI Bot --- .../qml2puppet/instances/qt5rendernodeinstanceserver.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp index 59e7a4aa821..c83937b733a 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp @@ -100,7 +100,13 @@ void Qt5RenderNodeInstanceServer::collectItemChangesAndSendChangeCommands() m_dirtyInstanceSet.insert(instanceForObject(effectParent)); } } - } else if (DesignerSupport::isDirty(item, DesignerSupport::AllMask)) { + } else if (DesignerSupport::isDirty( + item, + DesignerSupport::DirtyType( + DesignerSupport::AllMask + | DesignerSupport::ZValue + | DesignerSupport::OpacityValue + | DesignerSupport::Visible))) { ServerNodeInstance ancestorInstance = findNodeInstanceForItem( item->parentItem()); if (ancestorInstance.isValid()) From 58fbc2e8b8a64e55ba4659dffd98a1a437ad039e Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 21 Sep 2022 09:55:53 +0200 Subject: [PATCH 04/11] QmlDesigner: Fix qbs build Change-Id: Ifb7f0967d8811ea919bc9797944c4e120d4df756 Reviewed-by: Reviewed-by: Christian Stenger --- src/plugins/qmldesigner/qmldesignerplugin.qbs | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs index 51cd8b970aa..dc932ea3bfd 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.qbs +++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs @@ -784,18 +784,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", ] } From 95384d452691a65415b351e9ac3667b97188dcc5 Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Wed, 21 Sep 2022 12:39:35 +0200 Subject: [PATCH 05/11] QmlDesigner: Fix horizontal ScrollBar in States Change-Id: Ie1875cf5c9e57ac8ad74eebbfc24ba4ea90f73e7 Reviewed-by: Reviewed-by: Thomas Hartmann --- share/qtcreator/qmldesigner/newstateseditor/StateThumbnail.qml | 2 -- 1 file changed, 2 deletions(-) diff --git a/share/qtcreator/qmldesigner/newstateseditor/StateThumbnail.qml b/share/qtcreator/qmldesigner/newstateseditor/StateThumbnail.qml index 83de652edb0..ba7950781c4 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() } From 07c8f5249f8cf850b64e9330b0d13cb48a6024c6 Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Wed, 21 Sep 2022 12:39:05 +0200 Subject: [PATCH 06/11] QmlDesigner: Fix empty when condition submit Task-number: QDS-7729 Change-Id: Ia9ed1a911fd9ec5d6ffdcdb7ccfe0bb2ba843dc5 Reviewed-by: Thomas Hartmann --- share/qtcreator/qmldesigner/newstateseditor/StateMenu.qml | 4 +--- .../qmldesigner/newstateseditor/StateThumbnail.qml | 8 +++++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/qmldesigner/newstateseditor/StateMenu.qml b/share/qtcreator/qmldesigner/newstateseditor/StateMenu.qml index 8d0bb8810c4..d26572ebde6 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 ba7950781c4..642ebd972d1 100644 --- a/share/qtcreator/qmldesigner/newstateseditor/StateThumbnail.qml +++ b/share/qtcreator/qmldesigner/newstateseditor/StateThumbnail.qml @@ -654,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 @@ -694,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() From a6a7ca36883d87f5b1a140aef7781a551b998c55 Mon Sep 17 00:00:00 2001 From: Brook Cronin Date: Tue, 20 Sep 2022 11:53:40 +0200 Subject: [PATCH 07/11] QmlDesigner: Add new icon font for design viewer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add icons for Design Viewer UI to font, constants and theme.h Change-Id: Ib0645791a77ff2857be78758dfa0d0e880810042 Reviewed-by: Reviewed-by: Henning Gründl --- .../imports/StudioTheme/InternalConstants.qml | 241 +++++++++--------- .../imports/StudioTheme/icons.ttf | Bin 23852 -> 24432 bytes .../components/componentcore/theme.h | 3 + 3 files changed, 125 insertions(+), 119 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml index 46b3679198c..368a7e9b76f 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml @@ -71,125 +71,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 index 39c600217b9a6ba2dfd6c0adc363f32ab79d73a9..acd8df6ce3ff87fe98d8d5df178d672e0d6d070e 100644 GIT binary patch delta 1839 zcmZ3pi}Axg#(D-u1_lORh6V;^h5$FW5Z^hk*YYzk#D_32Fv$1^>l;OOq{c8XFh(#i zFeD`BCKlX(w|W)>12YQ)17lEfS&0IJB2y&;0}Du=B|WjY;QxOHW(J0M9|i^nj`W<$ zw2bd*pBNZe7cek*t;tADOi|SoI>^AlaEF0`!7L*qwLX#S<^PEc42&WS3=Aq6xg`~1 zh1?+i4h9BBublkkM6>^1Wef}~AV;|5CRP+Md}TPzz`$t1z`&r8mzbNn@5NhV28IA1 z1_q|51^LA#X^9`47#M<07#MgYz@B4dU^x40&*^x6o39Mq%r6)i7#QyRryqjQOzDRv zG1@XNoNUJ!%Xnb&9L8dHJ&*?&7$*xc2=9_|Wcd-BCFyqMLXy7=+DZ<&q`GZT3D}`$r*Bx#y?hNi4?kU`B zxDRo^;F01n;)&qN;pyO6!n1>yk2j2W5$_{DExroADSW&5dFuIX_=EW8@ShS;6NnL* zBXCDhPtZ*;MsSf3laQNGkI+BiAmLfUn}pAZaEQc-oD$^{6%*AGjS|fh-6ncO^plv1 z*c!1X;v(X9;zi;O;_Jlkh`*BHkcg95CGkblL2{bpBPk21DN+xlYor%QKa=s2>5w@l z>m-{adrS6{9FLruoTigph1@o|ck)g0^W--vm?$h#_@a18$w#S9>6>zj@(C3Kl`fSt zs%)xZo2RfIX0a4xU{K{_R2R`>He_co7BezuRA=Jgkl=`JZjMoB+{-B9CC0cn_IYYncNfw6&aOHjak_RS9 z*sLR>&8#5Lpvhp&V9Vgiz`!VKY-%iOY|3gTCN9S$E@rN-q{lM3PTWF3lAoE8nVVZo zhl!I%ke8ip@=0+`0VeMN9X%T%4Hj8uUS+ctij&zSG&dVc++t_EJ()*AhlkZnO<9SZ zkxk6l$b9k!K^fi$k}@jd0)LNysmbpJrMZ(OT?GCfk#ZJbVAwoaVIOxr69dbC8|Ej> zG7QQL*2IN9vyqrAqX?Ulnk^$Fu`nttshOA=Ge6Gu`8&ZUJKKkm6CBRpjojUgnF_$+ ztS%@93hiuA&@#?F1d{*z@4JsqcD4^w0XR(EjQ>smX#i_x5)>2s3sSV{Uk)fJ8RrT~ z32hG0`L9^7z~BTf)<9`Wl3_ZO&BVaYa1hF7W-w(mg|b-~BpK&J*{lrwj5ncdHU>#1 zSq5eXMix#61_lQP1}K}6!H6Ll%4TBVW7r5~Gc#l{oCL8ISU4G27>pRRK^zuN237_+ z#+^_$8-o$!%gOKjG%cMNiWu@4@)@!j6d0Vr>^z1{hCBua=lp`oqRjM+5(SN9O$8$Z zBO@IJr=tA)Yz60{{JhM($&UU9n2i_=CbI-lT*i5f^EX!o#W8X5Cg_izDVg(o&7-al|^^GDsQX?4{7$X=M z7!s0m6ASM9@l0o6VEV(rz!;QVR-(Y5$W+O|z!Jc~z`&B8SX}V`KLaxZLo5da0|Q5T zPGy>RU`GxE1M3t929Grvsfj77VquRN7#Qv_Fff>9WTe(7a=rXNk%56xgn@xUB_p?_ zLbRGEl!1Y92Ll76OHO`rA{*c5PYet!Aq)(RcDaca1q`1UPBSntS}-s$DC8yPrk?e) zX=7mUb6{X#x>=B4T#{-iIh}zaP=7Gk#i_o6=?gOtvl_D-a~g9K^Bm?I%wJg8Sd>^oSc+ICu&iM@!t#byg!LX< z09y@P58D>DJM2R2ChR`!E$lnk&v6KFByrs0^y6&d+{O8a%ZMw1YaiDou2; zMPQD=CV?M<5rT6B9|?sBtq}Sk%pt5K94CBAgiAzBL`x(}Bu`|U$PtlGqAH?mM4yO> zh}nr1i8Y9=6T2h!N}NMHPJEU47YPT6X%delEhMK%K9H)BS|IgI+Dp1a`k0K9OpeSg znNPAjvTCwUvK6x1WL4kEHObAB+azxyzexUz!X-r?#X7}rN-0Vwlns=-l+UQJse~~w zY+k^6m_?VHfkBmzQJs;UQOwAkQJsl{LxSUE3KSqZ+oBerP*e2VH zlx&_as==(T#Gu1q#^AuGZPCN zpO_AlBri8BD--i%eMwCbMsXQgFE@E@2@MumCUIdkS=R)m$r+NGoBJj2urpqqoTI42 z!(yVQ#Lmbj0`kk`6M`~49~ATi{vHuf&=X*?nS54JnkQIS0VJTSAi!j^`Lp6a?#;1! z{}k(`87#nQl7WGdL6V^Z%4T9HXDN^lOO{# z10xG3C>t>_K-r88MhqcPHWLFM!y+h~nIVf|7l^IE!pXqGV8j>$;;?Wsureqxu7a}J z7>pS2PW~03spY|t%8 Date: Tue, 20 Sep 2022 16:32:46 +0200 Subject: [PATCH 08/11] qmldesigner: make DesignerSettings thread save Change-Id: I07074b35456533e9729644ef3647803d477bd6f1 Reviewed-by: Marco Bubke --- .../assetslibrary/assetslibrarymodel.cpp | 4 +- .../components/componentcore/crumblebar.cpp | 4 +- .../connectioneditor/connectionviewwidget.cpp | 2 - .../components/debugview/debugview.cpp | 4 +- .../components/debugview/debugviewwidget.cpp | 2 +- .../components/edit3d/edit3dview.cpp | 2 +- .../components/edit3d/edit3dviewconfig.h | 4 +- .../components/formeditor/formeditorscene.cpp | 4 +- .../components/formeditor/formeditorview.cpp | 5 +- .../formeditor/formeditorwidget.cpp | 4 +- .../itemlibrary/itemlibrarywidget.cpp | 2 +- .../components/navigator/navigatorview.cpp | 14 ++--- .../components/navigator/navigatorwidget.cpp | 4 +- .../propertyeditor/colorpalettebackend.h | 5 +- .../components/texteditor/texteditorview.cpp | 2 +- .../designercore/exceptions/exception.cpp | 4 +- .../interactiveconnectionmanager.cpp | 7 ++- .../designercore/instances/puppetcreator.cpp | 19 +++---- .../designercore/instances/puppetcreator.h | 3 -- .../designercore/model/qmlobjectnode.cpp | 4 +- src/plugins/qmldesigner/designersettings.cpp | 51 +++++++++++-------- src/plugins/qmldesigner/designersettings.h | 17 +++++-- .../qmldesigner/documentwarningwidget.cpp | 4 +- .../qmldesigner/openuiqmlfiledialog.cpp | 5 +- src/plugins/qmldesigner/qmldesignerplugin.cpp | 23 +++------ src/plugins/qmldesigner/qmldesignerplugin.h | 3 +- src/plugins/qmldesigner/settingspage.cpp | 16 +++--- 27 files changed, 107 insertions(+), 111 deletions(-) diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp index 719406ea1ad..18967a5fe1d 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp @@ -109,7 +109,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; @@ -129,7 +129,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/componentcore/crumblebar.cpp b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp index 82032b3fc2e..a9b52c13b60 100644 --- a/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp +++ b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp @@ -145,7 +145,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 { @@ -155,7 +155,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/connectioneditor/connectionviewwidget.cpp b/src/plugins/qmldesigner/components/connectioneditor/connectionviewwidget.cpp index ae5eee75906..bed52cc7a75 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/connectionviewwidget.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/connectionviewwidget.cpp @@ -96,8 +96,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 c32edec724d..2d3b232e51c 100644 --- a/src/plugins/qmldesigner/components/debugview/debugview.cpp +++ b/src/plugins/qmldesigner/components/debugview/debugview.cpp @@ -44,13 +44,13 @@ const QString lineBreak = QStringLiteral("
"); 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 e7c2ceac7b3..766af4985cc 100644 --- a/src/plugins/qmldesigner/components/debugview/debugviewwidget.cpp +++ b/src/plugins/qmldesigner/components/debugview/debugviewwidget.cpp @@ -100,7 +100,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 b727df84911..5db622eb7b4 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp @@ -535,7 +535,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 8e4081176af..76cfdacdcea 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dviewconfig.h +++ b/src/plugins/qmldesigner/components/edit3d/edit3dviewconfig.h @@ -40,7 +40,7 @@ class Edit3DViewConfig public: static QList load(const char key[]) { - QVariant var = DesignerSettings::getValue(key); + QVariant var = QmlDesignerPlugin::settings().value(key); if (!var.isValid()) return {}; @@ -91,7 +91,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 5beb60a98e5..7b9e27c7e19 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp @@ -95,12 +95,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 FormEditorScene::itemsForQmlItemNodes(const QList &nodeList) const diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index 42ecfc06792..c3f697d5c68 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -36,6 +36,7 @@ #include "formeditorscene.h" #include "abstractcustomtool.h" +#include #include #include #include @@ -685,8 +686,8 @@ void FormEditorView::instancesCompleted(const QVector &completedNodeL void FormEditorView::instanceInformationsChanged(const QMultiHash &informationChangedHash) { QList 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 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 6991c561414..ff52e244ca7 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp @@ -479,12 +479,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 e1911036b53..1e4a9d232f6 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -285,7 +285,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 cc3934b6289..64f7d056029 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp @@ -158,10 +158,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(); @@ -528,7 +528,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) { @@ -568,7 +568,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()); @@ -582,7 +582,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()); @@ -597,14 +597,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 d43f4a1fe65..f3ccd491c8d 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp @@ -138,7 +138,7 @@ QList 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); @@ -147,7 +147,7 @@ QList 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 2042b30802f..7266f898569 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/colorpalettebackend.h +++ b/src/plugins/qmldesigner/components/propertyeditor/colorpalettebackend.h @@ -35,6 +35,7 @@ #include #include "designersettings.h" +#include #include namespace QmlDesigner { @@ -59,7 +60,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; @@ -71,7 +72,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 30375f9fc04..6ed1d88c009 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp +++ b/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp @@ -266,7 +266,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/exceptions/exception.cpp b/src/plugins/qmldesigner/designercore/exceptions/exception.cpp index a3a9806f7e6..82161173196 100644 --- a/src/plugins/qmldesigner/designercore/exceptions/exception.cpp +++ b/src/plugins/qmldesigner/designercore/exceptions/exception.cpp @@ -91,8 +91,8 @@ bool Exception::shouldAssert() bool Exception::warnAboutException() { #ifndef QMLDESIGNER_TEST - static bool warnException = !QmlDesignerPlugin::instance()->settings().value( - DesignerSettingsKey::ENABLE_MODEL_EXCEPTION_OUTPUT).toBool(); + static bool warnException = !QmlDesignerPlugin::settings().value( + DesignerSettingsKey::ENABLE_MODEL_EXCEPTION_OUTPUT).toBool(); return warnException; #else return true; diff --git a/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp b/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp index dd2f47e5558..1c02b5a0634 100644 --- a/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp +++ b/src/plugins/qmldesigner/designercore/instances/interactiveconnectionmanager.cpp @@ -50,15 +50,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 f2baf9c9844..262811747ce 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -149,7 +149,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; @@ -188,9 +188,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 { } @@ -232,7 +229,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"); @@ -265,7 +262,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"); @@ -415,7 +412,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(); @@ -435,7 +432,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 @@ -503,10 +500,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) @@ -553,7 +550,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 341e44c4df3..2516c2d27ed 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.h +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.h @@ -108,9 +108,6 @@ private: PuppetType m_availablePuppetType; static QHash 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/qmlobjectnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp index 64a562c0296..e5ea12a058f 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp @@ -677,10 +677,10 @@ QString QmlObjectNode::generateTranslatableText(const QString &text) { #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/designersettings.cpp b/src/plugins/qmldesigner/designersettings.cpp index 8841267385e..dacadf74042 100644 --- a/src/plugins/qmldesigner/designersettings.cpp +++ b/src/plugins/qmldesigner/designersettings.cpp @@ -25,8 +25,6 @@ #include "designersettings.h" -#include - #include namespace QmlDesigner { @@ -36,11 +34,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 &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) @@ -80,8 +102,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); @@ -103,8 +125,8 @@ void DesignerSettings::toSettings(QSettings *settings) const settings->beginGroup(QLatin1String(DesignerSettingsGroupKey::QML_SETTINGS_GROUP)); settings->beginGroup(QLatin1String(DesignerSettingsGroupKey::QML_DESIGNER_SETTINGS_GROUP)); - QHash::const_iterator i = constBegin(); - while (i != constEnd()) { + QHash::const_iterator i = m_cache.constBegin(); + while (i != m_cache.constEnd()) { storeValue(settings, i.key(), i.value()); ++i; } @@ -113,17 +135,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 851a5e8ef24..c3d014cc349 100644 --- a/src/plugins/qmldesigner/designersettings.h +++ b/src/plugins/qmldesigner/designersettings.h @@ -30,6 +30,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE class QSettings; @@ -77,19 +78,25 @@ const char SMOOTH_RENDERING[] = "SmoothRendering"; const char OLD_STATES_EDITOR[] = "OldStatesEditor"; } -class QMLDESIGNERCORE_EXPORT DesignerSettings : public QHash +class QMLDESIGNERCORE_EXPORT DesignerSettings { public: - DesignerSettings(); + DesignerSettings(QSettings *settings); + void insert(const QByteArray &key, const QVariant &value); + void insert(const QHash &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 m_cache; + mutable QMutex m_mutex; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/documentwarningwidget.cpp b/src/plugins/qmldesigner/documentwarningwidget.cpp index e691912fb90..cfa512e30d3 100644 --- a/src/plugins/qmldesigner/documentwarningwidget.cpp +++ b/src/plugins/qmldesigner/documentwarningwidget.cpp @@ -200,12 +200,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 &errors) diff --git a/src/plugins/qmldesigner/openuiqmlfiledialog.cpp b/src/plugins/qmldesigner/openuiqmlfiledialog.cpp index 8bd5a0e17ce..8fa4648a747 100644 --- a/src/plugins/qmldesigner/openuiqmlfiledialog.cpp +++ b/src/plugins/qmldesigner/openuiqmlfiledialog.cpp @@ -55,9 +55,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 4890205f42d..6226e54e808 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -124,7 +124,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; }); @@ -135,6 +135,7 @@ QtQuickDesignerFactory::QtQuickDesignerFactory() class QmlDesignerPluginPrivate { public: + DesignerSettings settings{Core::ICore::instance()->settings()}; QmlDesignerProjectManager projectManager; ViewManager viewManager{projectManager.asynchronousImageCache(), projectManager.asynchronousMeshImageCache()}; @@ -142,7 +143,6 @@ public: ShortCutManager shortCutManager; SettingsPage settingsPage; DesignModeWidget mainWidget; - DesignerSettings settings; QtQuickDesignerFactory m_qtQuickDesignerFactory; bool blockEditorChange = false; }; @@ -196,7 +196,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() @@ -297,8 +297,6 @@ bool QmlDesignerPlugin::delayedInitialize() }); MetaInfo::setPluginPaths(pluginPaths); - d->settings.fromSettings(Core::ICore::settings()); - d->viewManager.registerView(std::make_unique()); auto timelineView = d->viewManager.registerView(std::make_unique()); @@ -645,7 +643,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 topLevelWindows = QApplication::topLevelWindows(); @@ -753,18 +751,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 7670d4f1ea0..976b9d57c06 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.h +++ b/src/plugins/qmldesigner/qmldesignerplugin.h @@ -75,8 +75,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/settingspage.cpp b/src/plugins/qmldesigner/settingspage.cpp index 700402680a9..7c1530fedbc 100644 --- a/src/plugins/qmldesigner/settingspage.cpp +++ b/src/plugins/qmldesigner/settingspage.cpp @@ -63,7 +63,7 @@ public: void apply() final; - DesignerSettings settings() const; + QHash newSettings() const; void setSettings(const DesignerSettings &settings); private: @@ -108,9 +108,9 @@ SettingsPageWidget::SettingsPageWidget() setSettings(QmlDesignerPlugin::instance()->settings()); } -DesignerSettings SettingsPageWidget::settings() const +QHash SettingsPageWidget::newSettings() const { - DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); + QHash 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()); @@ -154,7 +154,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()) @@ -270,8 +271,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, @@ -285,7 +285,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.") @@ -294,7 +294,7 @@ void SettingsPageWidget::apply() } } - QmlDesignerPlugin::instance()->setSettings(newSettings); + QmlDesignerPlugin::settings().insert(settings); } SettingsPage::SettingsPage() From 39e3ae033896d35119365f7a676eacd251817bba Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Wed, 21 Sep 2022 15:53:24 +0200 Subject: [PATCH 09/11] qds: add feature to Key_Escape the splashscreen Change-Id: I815b15a9234e693518feb1ff6b218dc607bd3578 Reviewed-by: Thomas Hartmann --- src/plugins/studiowelcome/qml/splashscreen/main.qml | 8 ++++++++ src/plugins/studiowelcome/studiowelcomeplugin.cpp | 1 + 2 files changed, 9 insertions(+) diff --git a/src/plugins/studiowelcome/qml/splashscreen/main.qml b/src/plugins/studiowelcome/qml/splashscreen/main.qml index ee68681ab5f..533c29a17af 100644 --- a/src/plugins/studiowelcome/qml/splashscreen/main.qml +++ b/src/plugins/studiowelcome/qml/splashscreen/main.qml @@ -27,6 +27,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 b9df286c2a7..584bab8bf0e 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp +++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp @@ -576,6 +576,7 @@ void StudioWelcomePlugin::extensionsInitialized() s_view->show(); s_view->raise(); + s_view->setFocus(); }); } } From d90456d469c417584e085c75a9930a2d4813b2a8 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Wed, 21 Sep 2022 17:12:33 +0200 Subject: [PATCH 10/11] qmldesigner: remove old splashscreen ui code It has visible: false so it is not in use, but it produced some warnings. Change-Id: I2fc9c5d1c06b14d0e9104f9e1507baeabdc5f4bc Reviewed-by: Brook Cronin Reviewed-by: Tim Jenssen --- .../qml/splashscreen/Welcome_splash.qml | 50 ------------------- 1 file changed, 50 deletions(-) diff --git a/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml b/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml index 73c4eded2bc..d0d0dcfe922 100644 --- a/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml +++ b/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml @@ -254,56 +254,6 @@ Rectangle { "https://www.qt.io/terms-conditions/telemetry-privacy") } - 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 From fec59c21dfecc2922595e16255d9b18fd374df02 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 21 Sep 2022 15:06:04 +0200 Subject: [PATCH 11/11] QmlDesigner: unlock model when resetting in rewriter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We have to unlock the model to revert the model to the last correct state. The unlock method is not supposed to be used elsewhere and hidden in a private header. Fixing miss leading warning in destructor. Change-Id: Ia14aab2a8ffdc1cb9fa9b2968cdef38bfc84e5d5 Reviewed-by: Henning Gründl Reviewed-by: Reviewed-by: Qt CI Bot --- .../qmldesigner/designercore/model/model.cpp | 12 +++++++++++- .../qmldesigner/designercore/model/model_p.h | 3 +++ .../designercore/model/rewriterview.cpp | 19 +++++++++++-------- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index ef4e3cb2f78..a1855f0b652 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -1387,12 +1387,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() diff --git a/src/plugins/qmldesigner/designercore/model/model_p.h b/src/plugins/qmldesigner/designercore/model/model_p.h index c001e7fd6d1..e0d22621bb0 100644 --- a/src/plugins/qmldesigner/designercore/model/model_p.h +++ b/src/plugins/qmldesigner/designercore/model/model_p.h @@ -78,6 +78,9 @@ public: WriteLocker(ModelPrivate *model); ~WriteLocker(); + static void unlock(Model *model); + static void lock(Model *model); + private: QPointer m_model; }; diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index bb15a359b37..66438fa6d54 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -28,17 +28,18 @@ #include "texttomodelmerger.h" #include "modeltotextmerger.h" -#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include -#include -#include -#include -#include -#include -#include +#include #include #include @@ -799,7 +800,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(); }