diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 21b1c9cf647..48c1f2cc874 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -42,7 +42,7 @@ add_qtc_plugin(QmlDesigner add_qtc_plugin(assetexporterplugin CONDITION TARGET QmlDesigner - DEPENDS Core ProjectExplorer QmlDesigner Utils Qt5::Qml + DEPENDS Core ProjectExplorer QmlDesigner Utils Qt5::Qml Qt5::QuickPrivate PUBLIC_INCLUDES assetexporterplugin SOURCES assetexporterplugin/assetexportdialog.h assetexporterplugin/assetexportdialog.cpp assetexporterplugin/assetexportdialog.ui diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.pri b/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.pri index 713ab1184fb..41b144f6853 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.pri +++ b/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.pri @@ -1,4 +1,5 @@ QT *= qml quick core widgets +QT += quick-private VPATH += $$PWD diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.qbs b/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.qbs index e847525324d..39b1b2909cd 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.qbs +++ b/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.qbs @@ -10,6 +10,12 @@ QtcProduct { Depends { name: "ProjectExplorer" } Depends { name: "QmlDesigner" } Depends { name: "Utils" } + Depends { + name: "Qt" + submodules: [ + "quick-private" + ] + } cpp.includePaths: base.concat([ "./", diff --git a/src/plugins/qmldesigner/assetexporterplugin/parsers/textnodeparser.cpp b/src/plugins/qmldesigner/assetexporterplugin/parsers/textnodeparser.cpp index dfbc78a75d9..1a0c938a6ad 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/parsers/textnodeparser.cpp +++ b/src/plugins/qmldesigner/assetexporterplugin/parsers/textnodeparser.cpp @@ -28,7 +28,11 @@ #include #include +#include #include +#include + +#include namespace { const QHash AlignMapping{ @@ -86,6 +90,14 @@ QJsonObject TextNodeParser::json(Component &component) const textDetails.insert(IsMultilineTag, propertyValue("wrapMode").toString().compare("NoWrap") != 0); + // Calculate line height in pixels + QFontMetricsF fm(font); + auto lineHeightMode = propertyValue("lineHeightMode").value(); + double lineHeight = propertyValue("lineHeight").toDouble(); + qreal lineHeightPx = (lineHeightMode == QQuickText::FixedHeight) ? + lineHeight : qCeil(fm.height()) * lineHeight; + textDetails.insert(LineHeightTag, lineHeightPx); + QJsonObject metadata = jsonObject.value(MetadataTag).toObject(); metadata.insert(TextDetailsTag, textDetails); jsonObject.insert(MetadataTag, metadata);