Use Common Number separator instead of European to detect numbers

This is a fixup to commit 611df441. It seems that the wrong unicode
property was selected. It could be that both classes should be used.

Fixes bug #11900.

(cherry picked from commit f758894c2f)
This commit is contained in:
Jean-Marc Lasgouttes 2020-07-10 17:17:15 +02:00
parent 27d824aeb8
commit 4804f63740
4 changed files with 9 additions and 7 deletions

View File

@ -970,11 +970,11 @@ void Text::insertChar(Cursor & cur, char_type c)
static docstring const number_operators = from_ascii("+-/*");
static docstring const number_unary_operators = from_ascii("+-");
// European Number Separators: comma, dot etc.
// Common Number Separators: comma, dot etc.
// European Number Terminators: percent, permille, degree, euro etc.
if (cur.current_font.fontInfo().number() == FONT_ON) {
if (!isDigitASCII(c) && !contains(number_operators, c) &&
!(isEuropeanNumberSeparator(c) &&
!(isCommonNumberSeparator(c) &&
cur.pos() != 0 &&
cur.pos() != cur.lastpos() &&
tm.displayFont(pit, cur.pos()).fontInfo().number() == FONT_ON &&
@ -999,7 +999,7 @@ void Text::insertChar(Cursor & cur, char_type c)
) {
setCharFont(pit, cur.pos() - 1, cur.current_font,
tm.font_);
} else if (isEuropeanNumberSeparator(c)
} else if (isCommonNumberSeparator(c)
&& cur.pos() >= 2
&& tm.displayFont(pit, cur.pos() - 2).fontInfo().number() == FONT_ON) {
setCharFont(pit, cur.pos() - 1, cur.current_font,

View File

@ -164,13 +164,13 @@ bool isNumber(char_type c)
}
bool isEuropeanNumberSeparator(char_type c)
bool isCommonNumberSeparator(char_type c)
{
if (!is_utf16(c))
// assume that no non-utf16 character is a numeral
// c outside the UCS4 range is catched as well
return false;
return ucs4_to_qchar(c).direction() == QChar::DirES;
return ucs4_to_qchar(c).direction() == QChar::DirCS;
}

View File

@ -45,8 +45,8 @@ bool isSpace(char_type c);
bool isNumber(char_type c);
/// return true if a unicode char has the direction attribute
/// European Number Separator [ES]
bool isEuropeanNumberSeparator(char_type c);
/// Common Number Separator [CS]
bool isCommonNumberSeparator(char_type c);
/// return true if a unicode char has the direction attribute
/// European Number Terminator [ET]

View File

@ -66,6 +66,8 @@ What's new
- Fix language when pasting multiple cell outside table (bug 11898).
- Fix input of decimal numbers in RtL context (bug 11900).
* INTERNALS