diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/text/qabstracttextdocumentlayout_p.h | 11 | ||||
-rw-r--r-- | src/gui/text/qtextengine.cpp | 13 |
2 files changed, 23 insertions, 1 deletions
diff --git a/src/gui/text/qabstracttextdocumentlayout_p.h b/src/gui/text/qabstracttextdocumentlayout_p.h index 34eccd89af..f10c1d9bd2 100644 --- a/src/gui/text/qabstracttextdocumentlayout_p.h +++ b/src/gui/text/qabstracttextdocumentlayout_p.h @@ -18,6 +18,7 @@ #include <QtGui/private/qtguiglobal_p.h> #include "private/qobject_p.h" #include "qtextdocument_p.h" +#include "qabstracttextdocumentlayout.h" #include "QtCore/qhash.h" QT_BEGIN_NAMESPACE @@ -46,6 +47,16 @@ public: docPrivate = QTextDocumentPrivate::get(doc); } + static QAbstractTextDocumentLayoutPrivate *get(QAbstractTextDocumentLayout *layout) + { + return layout->d_func(); + } + + bool hasHandlers() const + { + return !handlers.isEmpty(); + } + inline int _q_dynamicPageCountSlot() const { return q_func()->pageCount(); } inline QSizeF _q_dynamicDocumentSizeSlot() const diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index c174eefa70..eded3e3f33 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -7,6 +7,7 @@ #include "qtextformat_p.h" #include "qtextengine_p.h" #include "qabstracttextdocumentlayout.h" +#include "qabstracttextdocumentlayout_p.h" #include "qtextlayout.h" #include "qtextboundaryfinder.h" #include <QtCore/private/qunicodetables_p.h> @@ -1933,7 +1934,17 @@ void QTextEngine::itemize() const while (uc < e) { switch (*uc) { case QChar::ObjectReplacementCharacter: - analysis->flags = QScriptAnalysis::Object; + { + const QTextDocumentPrivate *doc_p = QTextDocumentPrivate::get(block); + if (doc_p != nullptr + && doc_p->layout() != nullptr + && QAbstractTextDocumentLayoutPrivate::get(doc_p->layout()) != nullptr + && QAbstractTextDocumentLayoutPrivate::get(doc_p->layout())->hasHandlers()) { + analysis->flags = QScriptAnalysis::Object; + } else { + analysis->flags = QScriptAnalysis::None; + } + } break; case QChar::LineSeparator: analysis->flags = QScriptAnalysis::LineOrParagraphSeparator; |