diff options
-rw-r--r-- | src/widgets/accessible/qaccessiblewidgets.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/widgets/accessible/qaccessiblewidgets.cpp b/src/widgets/accessible/qaccessiblewidgets.cpp index 77958d65a5..a2bf14b25b 100644 --- a/src/widgets/accessible/qaccessiblewidgets.cpp +++ b/src/widgets/accessible/qaccessiblewidgets.cpp @@ -667,7 +667,20 @@ QRect QAccessibleTextWidget::characterRect(int offset) const if (line.isValid()) { qreal x = line.cursorToX(relativeOffset); - QFontMetrics fm(textCursor().charFormat().font()); + + QTextCharFormat format; + QTextBlock::iterator iter = block.begin(); + if (iter.atEnd()) + format = block.charFormat(); + else { + while (!iter.atEnd() && !iter.fragment().contains(offset)) + ++iter; + if (iter.atEnd()) // newline should have same format as preceding character + --iter; + format = iter.fragment().charFormat(); + } + + QFontMetrics fm(format.font()); const QString ch = text(offset, offset + 1); if (!ch.isEmpty()) { int w = fm.width(ch); |