richedit: Handle overflow of only spaces on first line of paragraph.

The uncommon case that this patch handles is enough whitespace being
on the first line of a paragraph to cause it to wrap.  In this case the
first non-space character will be wrapped onto the next line.
This commit is contained in:
Dylan Smith 2008-07-10 10:17:43 -04:00 committed by Alexandre Julliard
parent feda29bb0c
commit db3991257f
1 changed files with 13 additions and 2 deletions

View File

@ -358,8 +358,19 @@ static ME_DisplayItem *ME_WrapHandleRun(ME_WrapContext *wc, ME_DisplayItem *p)
pp = ME_SplitByBacktracking(wc, p, loc); pp = ME_SplitByBacktracking(wc, p, loc);
if (pp == wc->pRowStart) if (pp == wc->pRowStart)
{ {
/* we have a row that starts with spaces, or a single large character if (run->nFlags & MERF_STARTWHITE)
* which we cannot split. */ {
/* we had only spaces so far, so we must be on the first line of the
* paragraph, since no other lines of the paragraph start with spaces. */
assert(!wc->nRow);
/* The lines will only contain spaces, and the rest of the run will
* overflow onto the next line. */
wc->bOverflown = TRUE;
return p;
}
/* Couldn't split the first run, possible because we have a large font
* with a single character that caused an overflow.
*/
wc->pt.x += run->nWidth; wc->pt.x += run->nWidth;
return p->next; return p->next;
} }