diff options
author | Liang Qi <liang.qi@qt.io> | 2018-08-22 10:35:12 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-08-22 10:35:12 +0200 |
commit | 7533156b689c63fa26d66b3e6bacc598cb58456c (patch) | |
tree | 99a535c86e26284e807cd70e9af9a616b79bceaa /src/gui | |
parent | 07eda676e45f6c3c7237581c3f4a9e39695697ab (diff) | |
parent | 76c328b2b39617310993ce76e65665943b8c111c (diff) |
Merge remote-tracking branch 'origin/5.11' into 5.12
Conflicts:
src/gui/text/qtextengine.cpp
tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp
tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h
Change-Id: Ib9f968edbb0f3387c89bc25e914321d0738bfadc
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/qevent.cpp | 2 | ||||
-rw-r--r-- | src/gui/text/qtextengine.cpp | 29 |
2 files changed, 21 insertions, 10 deletions
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp index f5527354a2..6f8ea6dc70 100644 --- a/src/gui/kernel/qevent.cpp +++ b/src/gui/kernel/qevent.cpp @@ -4163,7 +4163,7 @@ QDebug operator<<(QDebug dbg, const QEvent *e) const QNativeGestureEvent *ne = static_cast<const QNativeGestureEvent *>(e); dbg << "QNativeGestureEvent("; QtDebugUtils::formatQEnum(dbg, ne->gestureType()); - dbg << "localPos="; + dbg << ", localPos="; QtDebugUtils::formatQPoint(dbg, ne->localPos()); dbg << ", value=" << ne->value() << ')'; } diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 6826f62b61..4e9b00f9c9 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1043,19 +1043,31 @@ struct QBidiAlgorithm { } } - bool process() + bool checkForBidi() const { - memset(analysis, 0, length * sizeof(QScriptAnalysis)); - - bool hasBidi = (baseLevel != 0); - if (!hasBidi) { - for (int i = 0; i < length; ++i) { - if (text[i].unicode() >= 0x590) { - hasBidi = true; + if (baseLevel != 0) + return true; + for (int i = 0; i < length; ++i) { + if (text[i].unicode() >= 0x590) { + switch (text[i].direction()) { + case QChar::DirR: case QChar::DirAN: + case QChar::DirLRE: case QChar::DirLRO: case QChar::DirAL: + case QChar::DirRLE: case QChar::DirRLO: case QChar::DirPDF: + case QChar::DirLRI: case QChar::DirRLI: case QChar::DirFSI: case QChar::DirPDI: + return true; + default: break; } } } + return false; + } + + bool process() + { + memset(analysis, 0, length * sizeof(QScriptAnalysis)); + + bool hasBidi = checkForBidi(); if (!hasBidi) return false; @@ -2071,7 +2083,6 @@ void QTextEngine::itemize() const case QChar::Nbsp: if (option.flags() & QTextOption::ShowTabsAndSpaces) { analysis->flags = (*uc == QChar::Space) ? QScriptAnalysis::Space : QScriptAnalysis::Nbsp; - analysis->bidiLevel = bidi.baseLevel; break; } Q_FALLTHROUGH(); |