diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/text/qtextengine.cpp | 10 | ||||
-rw-r--r-- | src/gui/text/qtextengine_p.h | 8 | ||||
-rw-r--r-- | src/gui/text/qtextlayout.cpp | 40 | ||||
-rw-r--r-- | src/gui/text/qtextlayout.h | 3 |
4 files changed, 50 insertions, 11 deletions
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 67a19804a3..187ffa5be7 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -2571,7 +2571,7 @@ void QTextEngine::setPreeditArea(int position, const QString &preeditText) clearLineData(); } -void QTextEngine::setFormats(const QList<QTextLayout::FormatRange> &formats) +void QTextEngine::setFormats(const QVector<QTextLayout::FormatRange> &formats) { if (formats.isEmpty()) { if (!specialData) @@ -2946,17 +2946,17 @@ QFixed QTextEngine::calculateTabWidth(int item, QFixed x) const namespace { class FormatRangeComparatorByStart { - const QList<QTextLayout::FormatRange> &list; + const QVector<QTextLayout::FormatRange> &list; public: - FormatRangeComparatorByStart(const QList<QTextLayout::FormatRange> &list) : list(list) { } + FormatRangeComparatorByStart(const QVector<QTextLayout::FormatRange> &list) : list(list) { } bool operator()(int a, int b) { return list.at(a).start < list.at(b).start; } }; class FormatRangeComparatorByEnd { - const QList<QTextLayout::FormatRange> &list; + const QVector<QTextLayout::FormatRange> &list; public: - FormatRangeComparatorByEnd(const QList<QTextLayout::FormatRange> &list) : list(list) { } + FormatRangeComparatorByEnd(const QVector<QTextLayout::FormatRange> &list) : list(list) { } bool operator()(int a, int b) { return list.at(a).start + list.at(a).length < list.at(b).start + list.at(b).length; } diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h index 39b9e0cb5a..3590c6da07 100644 --- a/src/gui/text/qtextengine_p.h +++ b/src/gui/text/qtextengine_p.h @@ -570,9 +570,9 @@ public: inline bool hasFormats() const { return block.docHandle() || (specialData && !specialData->formats.isEmpty()); } - inline QList<QTextLayout::FormatRange> formats() const - { return specialData ? specialData->formats : QList<QTextLayout::FormatRange>(); } - void setFormats(const QList<QTextLayout::FormatRange> &formats); + inline QVector<QTextLayout::FormatRange> formats() const + { return specialData ? specialData->formats : QVector<QTextLayout::FormatRange>(); } + void setFormats(const QVector<QTextLayout::FormatRange> &formats); private: static void init(QTextEngine *e); @@ -580,7 +580,7 @@ private: struct SpecialData { int preeditPosition; QString preeditText; - QList<QTextLayout::FormatRange> formats; + QVector<QTextLayout::FormatRange> formats; QVector<QTextCharFormat> resolvedFormats; // only used when no docHandle is available QScopedPointer<QTextFormatCollection> formatCollection; diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp index 7da3e84041..dabe06fa88 100644 --- a/src/gui/text/qtextlayout.cpp +++ b/src/gui/text/qtextlayout.cpp @@ -485,7 +485,6 @@ QString QTextLayout::preeditAreaText() const return d->preeditAreaText(); } - /*! Sets the additional formats supported by the text layout to \a formatList. The formats are applied with preedit area text in place. @@ -494,7 +493,20 @@ QString QTextLayout::preeditAreaText() const */ void QTextLayout::setAdditionalFormats(const QList<FormatRange> &formatList) { - d->setFormats(formatList); + setFormats(formatList.toVector()); +} + +/*! + \since 5.6 + + Sets the additional formats supported by the text layout to \a formats. + The formats are applied with preedit area text in place. + + \sa formats(), clearFormats() +*/ +void QTextLayout::setFormats(const QVector<FormatRange> &formats) +{ + d->setFormats(formats); if (d->block.docHandle()) d->block.docHandle()->documentChange(d->block.position(), d->block.length()); @@ -507,6 +519,18 @@ void QTextLayout::setAdditionalFormats(const QList<FormatRange> &formatList) */ QList<QTextLayout::FormatRange> QTextLayout::additionalFormats() const { + return formats().toList(); +} + +/*! + \since 5.6 + + Returns the list of additional formats supported by the text layout. + + \sa setFormats(), clearFormats() +*/ +QVector<QTextLayout::FormatRange> QTextLayout::formats() const +{ return d->formats(); } @@ -521,6 +545,18 @@ void QTextLayout::clearAdditionalFormats() } /*! + \since 5.6 + + Clears the list of additional formats supported by the text layout. + + \sa formats(), setFormats() +*/ +void QTextLayout::clearFormats() +{ + setFormats(QVector<FormatRange>()); +} + +/*! Enables caching of the complete layout information if \a enable is true; otherwise disables layout caching. Usually QTextLayout throws most of the layouting information away after a diff --git a/src/gui/text/qtextlayout.h b/src/gui/text/qtextlayout.h index 47dcd388e2..ce092e0928 100644 --- a/src/gui/text/qtextlayout.h +++ b/src/gui/text/qtextlayout.h @@ -129,6 +129,9 @@ public: void setAdditionalFormats(const QList<FormatRange> &overrides); QList<FormatRange> additionalFormats() const; void clearAdditionalFormats(); + void setFormats(const QVector<FormatRange> &overrides); + QVector<FormatRange> formats() const; + void clearFormats(); void setCacheEnabled(bool enable); bool cacheEnabled() const; |