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:
parent
feda29bb0c
commit
db3991257f
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue