summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/widgets/accessible/qaccessiblewidgets.cpp15
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);