Only show the bidi cursor mark if we actually have bidirectional text

Don't show the mark simply because we have unicode code points
larger than 0x590.

Task-number: QTBUG-69665
Change-Id: I9af97383f3bcd52277a5288e7ad06ec240c7e51c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
bb10
Lars Knoll 2018-08-10 14:46:49 +02:00
parent 70ba75519d
commit 1702ae24b3
1 changed files with 20 additions and 8 deletions

View File

@ -1037,19 +1037,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;