Make sure cursor position doesn't exceed line end
authorJiang Jiang <jiang.jiang@nokia.com>
Mon, 19 Sep 2011 11:20:13 +0000 (13:20 +0200)
committerQt by Nokia <qt-info@nokia.com>
Fri, 23 Sep 2011 12:05:56 +0000 (14:05 +0200)
If we have trailing spaces at the end of a line, cursor will disappear
because the position we returned exceeds line end, thus the widget
border. By limiting it within line.width we can make sure it always
visible, which is more consistent to the behavior in common platforms.

Reviewed-by: Eskil
(cherry picked from commit c750afe0e0f043389d30850070889946e4c6e8af)

Change-Id: Ifc60b718369639bbb6f5afb35c29a6eb0dccd219
Reviewed-on: http://codereview.qt-project.org/5458
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
src/gui/text/qtextlayout.cpp

index cd45d3a..00206ba 100644 (file)
@@ -2671,6 +2671,9 @@ qreal QTextLine::cursorToX(int *cursorPos, Edge edge) const
         x += eng->offsetInLigature(si, pos, end, glyph_pos);
     }
 
+    if (eng->option.wrapMode() != QTextOption::NoWrap && x > line.width)
+        x = line.width;
+
     *cursorPos = pos + si->position;
     return x.toReal();
 }