Fixed hanging errors in uiDrawCaret().

This commit is contained in:
Pietro Gagliardi 2017-02-10 19:29:07 -05:00
parent 5f05ebbffe
commit 6acb10a4fc
1 changed files with 12 additions and 15 deletions

View File

@ -10,24 +10,21 @@ void uiDrawCaret(uiDrawContext *c, double x, double y, uiDrawTextLayout *layout,
uiDrawPath *path; uiDrawPath *path;
uiDrawBrush brush; uiDrawBrush brush;
xoff = uiDrawTextLayoutByteLocationInLine(layout, pos, *line); if (*line < 0)
if (xoff < 0) { *line = 0;
size_t start, end; if (*line > (uiDrawTextLayoutNumLines(layout) - 1))
int incr;
if (*line > (uiDrawTextLayoutNumLines(layout) - 1)) {
*line = (uiDrawTextLayoutNumLines(layout) - 1); *line = (uiDrawTextLayoutNumLines(layout) - 1);
incr = -1; // TODO cap pos
} else { xoff = uiDrawTextLayoutByteLocationInLine(layout, pos, *line);
uiDrawTextLayoutLineByteRange(layout, *line, &start, &end); while (xoff < 0) {
incr = 1; size_t start, end;
if (end < pos)
incr = -1; uiDrawTextLayoutLineByteRange(layout, *line, &start, &end);
} if (end < pos) // too far up
while (xoff < 0) { (*line)++;
*line += incr; else
(*line)--;
xoff = uiDrawTextLayoutByteLocationInLine(layout, pos, *line); xoff = uiDrawTextLayoutByteLocationInLine(layout, pos, *line);
}
} }
uiDrawTextLayoutLineGetMetrics(layout, *line, &m); uiDrawTextLayoutLineGetMetrics(layout, *line, &m);