From 8996c4a9d8ddf24471fe9c91d8a1798120a84a73 Mon Sep 17 00:00:00 2001 From: Andrii Semkiv Date: Tue, 11 Mar 2025 13:56:02 +0100 Subject: [PATCH] QML Designer: reload QML puppet when adding fonts Automatically reload QML when importing fonts, so that the newly added font can be viewed in 2D preview right away. Note, this causes a visible flicker in the 2D preview. If anyone has ideas how to make it smoother, I'm open to suggestions. Fixes: QDS-14900 Change-Id: Ib7a354d0e25a087aabe690ebdafbf131b579dd40 Reviewed-by: Marco Bubke --- .../components/componentcore/modelnodeoperations.cpp | 6 +++++- .../qmldesigner/components/componentcore/viewmanager.cpp | 5 +++++ .../qmldesigner/components/componentcore/viewmanager.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index afd2ae12b31..cd67e806dd8 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -1129,7 +1129,11 @@ static QString getAssetDefaultDirectory(const QString &assetDir, const QString & AddFilesResult addFontToProject(const QStringList &fileNames, const QString &defaultDir, bool showDialog) { - return addFilesToProject(fileNames, getAssetDefaultDirectory("fonts", defaultDir), showDialog); + const AddFilesResult result = addFilesToProject(fileNames, + getAssetDefaultDirectory("fonts", defaultDir), + showDialog); + QmlDesignerPlugin::viewManager().view()->resetPuppet(); + return result; } AddFilesResult addSoundToProject(const QStringList &fileNames, const QString &defaultDir, bool showDialog) diff --git a/src/plugins/qmldesigner/components/componentcore/viewmanager.cpp b/src/plugins/qmldesigner/components/componentcore/viewmanager.cpp index 0788e0e1121..062aefde089 100644 --- a/src/plugins/qmldesigner/components/componentcore/viewmanager.cpp +++ b/src/plugins/qmldesigner/components/componentcore/viewmanager.cpp @@ -512,6 +512,11 @@ const AbstractView *ViewManager::view() const return &d->nodeInstanceView; } +AbstractView *ViewManager::view() +{ + return &d->nodeInstanceView; +} + TextEditorView *ViewManager::textEditorView() { return &d->textEditorView; diff --git a/src/plugins/qmldesigner/components/componentcore/viewmanager.h b/src/plugins/qmldesigner/components/componentcore/viewmanager.h index 08bbb313053..1ca067f213d 100644 --- a/src/plugins/qmldesigner/components/componentcore/viewmanager.h +++ b/src/plugins/qmldesigner/components/componentcore/viewmanager.h @@ -72,6 +72,7 @@ public: void nextFileIsCalledInternally(); const AbstractView *view() const; + AbstractView *view(); TextEditorView *textEditorView(); void emitCustomNotification(const QString &identifier, const QList &nodeList,