[PATCH 07/16] [RichEdit]: added support for end of line inside paragraphs
Eric Pouech
eric.pouech at orange.fr
Sat Mar 15 16:05:44 CDT 2008
A+
---
dlls/riched20/editstr.h | 14 ++++++++------
dlls/riched20/wrap.c | 7 +++++++
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/dlls/riched20/editstr.h b/dlls/riched20/editstr.h
index 92dbab4..7c1fe7f 100644
--- a/dlls/riched20/editstr.h
+++ b/dlls/riched20/editstr.h
@@ -92,11 +92,11 @@ typedef enum {
/******************************** run flags *************************/
#define MERF_STYLEFLAGS 0x0FFF
/* run contains non-text content, which has its own rules for wrapping, sizing etc */
-#define MERF_GRAPHICS 1
+#define MERF_GRAPHICS 0x001
/* run is a tab (or, in future, any kind of content whose size is dependent on run position) */
-#define MERF_TAB 2
+#define MERF_TAB 0x002
/* run is a cell boundary */
-#define MERF_CELL 4
+#define MERF_CELL 0x004
#define MERF_NONTEXT (MERF_GRAPHICS | MERF_TAB | MERF_CELL)
@@ -114,13 +114,15 @@ typedef enum {
#define MERF_CALCBYWRAP 0x0F0000
/* the "end of paragraph" run, contains 1 character */
#define MERF_ENDPARA 0x100000
+/* forcing the "end of row" run, contains 1 character */
+#define MERF_ENDROW 0x200000
/* run is hidden */
-#define MERF_HIDDEN 0x200000
+#define MERF_HIDDEN 0x400000
/* runs with any of these flags set cannot be joined */
-#define MERF_NOJOIN (MERF_GRAPHICS|MERF_TAB|MERF_ENDPARA)
+#define MERF_NOJOIN (MERF_GRAPHICS|MERF_TAB|MERF_ENDPARA|MERF_ENDROW)
/* runs that don't contain real text */
-#define MERF_NOTEXT (MERF_GRAPHICS|MERF_TAB|MERF_ENDPARA)
+#define MERF_NOTEXT (MERF_GRAPHICS|MERF_TAB|MERF_ENDPARA|MERF_ENDROW)
/* those flags are kept when the row is split */
#define MERF_SPLITMASK (~(0))
diff --git a/dlls/riched20/wrap.c b/dlls/riched20/wrap.c
index 1037cec..cd1f325 100644
--- a/dlls/riched20/wrap.c
+++ b/dlls/riched20/wrap.c
@@ -282,6 +282,13 @@ static ME_DisplayItem *ME_WrapHandleRun(ME_WrapContext *wc, ME_DisplayItem *p)
ME_InsertRowStart(wc, p);
return p;
}
+ /* simply end the current row and move on to next one */
+ if (run->nFlags & MERF_ENDROW)
+ {
+ p = p->next;
+ ME_InsertRowStart(wc, p);
+ return p;
+ }
/* we're not at the end of the row */
/* will current run fit? */
if (wc->pt.x + run->nWidth > wc->nAvailWidth)
More information about the wine-patches
mailing list