aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp')
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp b/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp
index 8ab244fe2b..3349a5df54 100644
--- a/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp
@@ -27,6 +27,8 @@
#include <QVariant>
#include <QColor>
+#include <QVector3D>
+#include <QVector2D>
#include "bindingproperty.h"
#include "signalhandlerproperty.h"
@@ -47,9 +49,16 @@ inline static QString properColorName(const QColor &color)
return QString::asprintf("#%02x%02x%02x%02x", color.alpha(), color.red(), color.green(), color.blue());
}
-inline static QString doubleToString(double d)
+inline static QString doubleToString(const PropertyName &propertyName, double d)
{
- QString string = QString::number(d, 'f', 3);
+ static QVector<PropertyName> lowPrecisionProperties
+ = {"width", "height", "x", "y", "rotation", "scale", "opacity"};
+ int precision = 5;
+ if (propertyName.contains("anchors") || propertyName.contains("font")
+ || lowPrecisionProperties.contains(propertyName))
+ precision = 3;
+
+ QString string = QString::number(d, 'f', precision);
if (string.contains(QLatin1Char('.'))) {
while (string.at(string.length()- 1) == QLatin1Char('0'))
string.chop(1);
@@ -140,7 +149,7 @@ QString QmlTextGenerator::toQml(const AbstractProperty &property, int indentDept
case QMetaType::Float:
case QMetaType::Double:
- return doubleToString(value.toDouble());
+ return doubleToString(property.name(), value.toDouble());
case QMetaType::Int:
case QMetaType::LongLong:
case QMetaType::UInt:
@@ -149,6 +158,14 @@ QString QmlTextGenerator::toQml(const AbstractProperty &property, int indentDept
case QMetaType::QString:
case QMetaType::QChar:
return QStringLiteral("\"%1\"").arg(escape(unicodeEscape(stringValue)));
+ case QMetaType::QVector2D: {
+ auto vec = value.value<QVector2D>();
+ return QStringLiteral("Qt.vector2d(%1, %2)").arg(vec.x()).arg(vec.y());
+ }
+ case QMetaType::QVector3D: {
+ auto vec = value.value<QVector3D>();
+ return QStringLiteral("Qt.vector3d(%1, %2, %3)").arg(vec.x()).arg(vec.y()).arg(vec.z());
+ }
default:
return QStringLiteral("\"%1\"").arg(escape(stringValue));
}