Dylan Smith : richedit: Handle overflow of only spaces on first line of paragraph.
Alexandre Julliard
julliard at winehq.org
Thu Jul 10 14:07:30 CDT 2008
Module: wine
Branch: master
Commit: db3991257fdb7137f9b0fab5e2a52a183828ff84
URL: http://source.winehq.org/git/wine.git/?a=commit;h=db3991257fdb7137f9b0fab5e2a52a183828ff84
Author: Dylan Smith <dylan.ah.smith at gmail.com>
Date: Thu Jul 10 10:17:43 2008 -0400
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.
---
dlls/riched20/wrap.c | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/dlls/riched20/wrap.c b/dlls/riched20/wrap.c
index 614c6ac..90dca83 100644
--- a/dlls/riched20/wrap.c
+++ b/dlls/riched20/wrap.c
@@ -358,8 +358,19 @@ static ME_DisplayItem *ME_WrapHandleRun(ME_WrapContext *wc, ME_DisplayItem *p)
pp = ME_SplitByBacktracking(wc, p, loc);
if (pp == wc->pRowStart)
{
- /* we have a row that starts with spaces, or a single large character
- * which we cannot split. */
+ if (run->nFlags & MERF_STARTWHITE)
+ {
+ /* 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;
return p->next;
}
More information about the wine-cvs
mailing list