[PATCH 4/4] riched20: Add handling for a few more special characters.
Huw Davies
huw at codeweavers.com
Mon Feb 29 06:06:26 CST 2016
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
dlls/riched20/reader.c | 18 ++++++++++++++++++
dlls/riched20/tests/editor.c | 26 ++++++++++++++++++++++++++
2 files changed, 44 insertions(+)
diff --git a/dlls/riched20/reader.c b/dlls/riched20/reader.c
index 27d0182..2e5dafd 100644
--- a/dlls/riched20/reader.c
+++ b/dlls/riched20/reader.c
@@ -2544,6 +2544,12 @@ static void SpecialChar (RTF_Info *info)
case rtfEnDash:
RTFPutUnicodeChar (info, 0x2013);
break;
+ case rtfEmSpace:
+ RTFPutUnicodeChar (info, ' ');
+ break;
+ case rtfEnSpace:
+ RTFPutUnicodeChar (info, ' ');
+ break;
case rtfLQuote:
RTFPutUnicodeChar (info, 0x2018);
break;
@@ -2556,6 +2562,18 @@ static void SpecialChar (RTF_Info *info)
case rtfRDblQuote:
RTFPutUnicodeChar (info, 0x201D);
break;
+ case rtfLTRMark:
+ RTFPutUnicodeChar (info, 0x200E);
+ break;
+ case rtfRTLMark:
+ RTFPutUnicodeChar (info, 0x200F);
+ break;
+ case rtfNoWidthJoiner:
+ RTFPutUnicodeChar (info, 0x200D);
+ break;
+ case rtfNoWidthNonJoiner:
+ RTFPutUnicodeChar (info, 0x200C);
+ break;
}
}
diff --git a/dlls/riched20/tests/editor.c b/dlls/riched20/tests/editor.c
index 98b31ce..18d080c 100644
--- a/dlls/riched20/tests/editor.c
+++ b/dlls/riched20/tests/editor.c
@@ -8278,6 +8278,31 @@ static void test_WM_GETTEXTLENGTH(void)
DestroyWindow(hwndRichEdit);
}
+static void test_rtf_specials(void)
+{
+ const char *specials = "{\\rtf1\\emspace\\enspace\\bullet\\lquote"
+ "\\rquote\\ldblquote\\rdblquote\\ltrmark\\rtlmark\\zwj\\zwnj}";
+ const WCHAR expect_specials[] = {' ',' ',0x2022,0x2018,0x2019,0x201c,
+ 0x201d,0x200e,0x200f,0x200d,0x200c};
+ HWND edit = new_richeditW( NULL );
+ EDITSTREAM es;
+ WCHAR buf[80];
+ LRESULT result;
+
+ es.dwCookie = (DWORD_PTR)&specials;
+ es.dwError = 0;
+ es.pfnCallback = test_EM_STREAMIN_esCallback;
+ result = SendMessageA( edit, EM_STREAMIN, SF_RTF, (LPARAM)&es );
+ ok( result == 11, "got %ld\n", result );
+
+ result = SendMessageW( edit, WM_GETTEXT, sizeof(buf)/sizeof(buf[0]), (LPARAM)buf );
+ ok( result == sizeof(expect_specials)/sizeof(expect_specials[0]), "got %ld\n", result );
+ ok( !memcmp( buf, expect_specials, sizeof(expect_specials) ), "got %s\n", wine_dbgstr_w(buf) );
+
+ DestroyWindow( edit );
+}
+
+
START_TEST( editor )
{
BOOL ret;
@@ -8347,6 +8372,7 @@ START_TEST( editor )
test_EM_SETREADONLY();
test_EM_SETFONTSIZE();
test_alignment_style();
+ test_rtf_specials();
/* Set the environment variable WINETEST_RICHED20 to keep windows
* responsive and open for 30 seconds. This is useful for debugging.
--
2.7.0
More information about the wine-patches
mailing list