diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/text/qtextformat.cpp | 38 | ||||
-rw-r--r-- | src/gui/text/qtextformat.h | 12 |
2 files changed, 38 insertions, 12 deletions
diff --git a/src/gui/text/qtextformat.cpp b/src/gui/text/qtextformat.cpp index 10b8ade117..e94fad8890 100644 --- a/src/gui/text/qtextformat.cpp +++ b/src/gui/text/qtextformat.cpp @@ -201,10 +201,9 @@ public: inline void insertProperty(qint32 key, const QVariant &value) { hashDirty = true; - if ((key >= QTextFormat::FirstFontProperty && key <= QTextFormat::LastFontProperty) - || key == QTextFormat::FontLetterSpacingType) { + if (key >= QTextFormat::FirstFontProperty && key <= QTextFormat::LastFontProperty) fontDirty = true; - } + for (int i = 0; i < props.count(); ++i) if (props.at(i).key == key) { props[i].value = value; @@ -218,10 +217,8 @@ public: for (int i = 0; i < props.count(); ++i) if (props.at(i).key == key) { hashDirty = true; - if ((key >= QTextFormat::FirstFontProperty && key <= QTextFormat::LastFontProperty) - || key == QTextFormat::FontLetterSpacingType) { + if (key >= QTextFormat::FirstFontProperty && key <= QTextFormat::LastFontProperty) fontDirty = true; - } props.remove(i); return; } @@ -444,7 +441,22 @@ void QTextFormatPrivate::recalcFont() const #ifndef QT_NO_DATASTREAM Q_GUI_EXPORT QDataStream &operator<<(QDataStream &stream, const QTextFormat &fmt) { - stream << fmt.format_type << fmt.properties(); + QMap<int, QVariant> properties = fmt.properties(); + if (stream.version() < QDataStream::Qt_6_0) { + auto it = properties.find(QTextFormat::FontLetterSpacingType); + if (it != properties.end()) { + properties[QTextFormat::OldFontLetterSpacingType] = it.value(); + properties.erase(it); + } + + it = properties.find(QTextFormat::FontStretch); + if (it != properties.end()) { + properties[QTextFormat::OldFontStretch] = it.value(); + properties.erase(it); + } + } + + stream << fmt.format_type << properties; return stream; } @@ -459,8 +471,14 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &stream, QTextFormat &fmt) fmt.d = new QTextFormatPrivate(); for (QMap<qint32, QVariant>::ConstIterator it = properties.constBegin(); - it != properties.constEnd(); ++it) - fmt.d->insertProperty(it.key(), it.value()); + it != properties.constEnd(); ++it) { + qint32 key = it.key(); + if (key == QTextFormat::OldFontLetterSpacingType) + key = QTextFormat::FontLetterSpacingType; + else if (key == QTextFormat::OldFontStretch) + key = QTextFormat::FontStretch; + fmt.d->insertProperty(key, it.value()); + } return stream; } @@ -620,6 +638,8 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &stream, QTextFormat &fmt) \value IsAnchor \value AnchorHref \value AnchorName + \omitvalue OldFontLetterSpacingType + \omitvalue OldFontStretch \value ObjectType List properties diff --git a/src/gui/text/qtextformat.h b/src/gui/text/qtextformat.h index 28da0fe344..b4db18289e 100644 --- a/src/gui/text/qtextformat.h +++ b/src/gui/text/qtextformat.h @@ -184,16 +184,16 @@ public: // character properties FirstFontProperty = 0x1FE0, FontCapitalization = FirstFontProperty, - FontLetterSpacingType = 0x2033, FontLetterSpacing = 0x1FE1, FontWordSpacing = 0x1FE2, - FontStretch = 0x2034, FontStyleHint = 0x1FE3, FontStyleStrategy = 0x1FE4, FontKerning = 0x1FE5, FontHintingPreference = 0x1FE6, FontFamilies = 0x1FE7, FontStyleName = 0x1FE8, + FontLetterSpacingType = 0x1FE9, + FontStretch = 0x1FEA, FontFamily = 0x2000, FontPointSize = 0x2001, FontSizeAdjustment = 0x2002, @@ -207,7 +207,7 @@ public: FontPixelSize = 0x2009, LastFontProperty = FontPixelSize, - TextUnderlineColor = 0x2010, + TextUnderlineColor = 0x2020, TextVerticalAlignment = 0x2021, TextOutline = 0x2022, TextUnderlineStyle = 0x2023, @@ -216,6 +216,12 @@ public: IsAnchor = 0x2030, AnchorHref = 0x2031, AnchorName = 0x2032, + + // Included for backwards compatibility with old QDataStreams. + // Should not be referenced in user code. + OldFontLetterSpacingType = 0x2033, + OldFontStretch = 0x2034, + ObjectType = 0x2f00, // list properties |