Module: wine Branch: master Commit: 17b7cde00ee4fb8750fd21500b2ede69af167fe4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=17b7cde00ee4fb8750fd21500b...
Author: Huw Davies huw@codeweavers.com Date: Mon Jun 5 14:18:40 2017 +0100
riched20: The background colour is set using \highlight.
Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/riched20/reader.c | 2 +- dlls/riched20/tests/editor.c | 20 ++++++++++++++++++-- dlls/riched20/writer.c | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/dlls/riched20/reader.c b/dlls/riched20/reader.c index a05b7fc..0310109 100644 --- a/dlls/riched20/reader.c +++ b/dlls/riched20/reader.c @@ -1377,7 +1377,7 @@ static RTFKey rtfKey[] = { rtfCharAttr, rtfSuperScrShrink, "super", 0 }, { rtfCharAttr, rtfInvisible, "v", 0 }, { rtfCharAttr, rtfForeColor, "cf", 0 }, - { rtfCharAttr, rtfBackColor, "cb", 0 }, + { rtfCharAttr, rtfBackColor, "highlight", 0 }, { rtfCharAttr, rtfRTLChar, "rtlch", 0 }, { rtfCharAttr, rtfLTRChar, "ltrch", 0 }, { rtfCharAttr, rtfCharStyleNum, "cs", 0 }, diff --git a/dlls/riched20/tests/editor.c b/dlls/riched20/tests/editor.c index ef53c56..20189c6 100644 --- a/dlls/riched20/tests/editor.c +++ b/dlls/riched20/tests/editor.c @@ -8537,19 +8537,23 @@ static void test_WM_GETTEXTLENGTH(void) DestroyWindow(hwndRichEdit); }
-static void test_rtf_specials(void) +static void test_rtf(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}; const char *pard = "{\rtf1 ABC\rtlpar\par DEF\par HIJ\pard\par}"; + const char *highlight = "{\rtf1{\colortbl;\red0\green0\blue0;\red128\green128\blue128;\red192\green192\blue192;}\cf2\highlight3 foo\par}"; + HWND edit = new_richeditW( NULL ); EDITSTREAM es; WCHAR buf[80]; LRESULT result; PARAFORMAT2 fmt; + CHARFORMAT2W cf;
+ /* Test rtf specials */ es.dwCookie = (DWORD_PTR)&specials; es.dwError = 0; es.pfnCallback = test_EM_STREAMIN_esCallback; @@ -8580,6 +8584,18 @@ static void test_rtf_specials(void) ok( fmt.dwMask & PFM_RTLPARA, "rtl para mask not set\n" ); ok( !(fmt.wEffects & PFE_RTLPARA), "rtl para set\n" );
+ /* Test \highlight */ + es.dwCookie = (DWORD_PTR)&highlight; + result = SendMessageA( edit, EM_STREAMIN, SF_RTF, (LPARAM)&es ); + ok( result == 3, "got %ld\n", result ); + SendMessageW( edit, EM_SETSEL, 1, 1 ); + memset( &cf, 0, sizeof(cf) ); + cf.cbSize = sizeof(cf); + SendMessageW( edit, EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf ); + ok( (cf.dwEffects & (CFE_AUTOCOLOR | CFE_AUTOBACKCOLOR)) == 0, "got %08x\n", cf.dwEffects ); + ok( cf.crTextColor == RGB(128,128,128), "got %08x\n", cf.crTextColor ); + ok( cf.crBackColor == RGB(192,192,192), "got %08x\n", cf.crBackColor ); + DestroyWindow( edit ); }
@@ -8769,7 +8785,7 @@ START_TEST( editor ) test_EM_SETREADONLY(); test_EM_SETFONTSIZE(); test_alignment_style(); - test_rtf_specials(); + test_rtf(); test_background(); test_eop_char_fmt(); test_para_numbering(); diff --git a/dlls/riched20/writer.c b/dlls/riched20/writer.c index 1cd293c..5494afe 100644 --- a/dlls/riched20/writer.c +++ b/dlls/riched20/writer.c @@ -775,7 +775,7 @@ ME_StreamOutRTFCharProps(ME_OutStream *pStream, CHARFORMAT2W *fmt) { if (fmt->dwEffects & CFE_AUTOBACKCOLOR) i = 0; else find_color_in_colortbl( pStream, fmt->crBackColor, &i ); - sprintf(props + strlen(props), "\cb%u", i); + sprintf(props + strlen(props), "\highlight%u", i); } if ((old_fmt->dwEffects ^ fmt->dwEffects) & CFE_AUTOCOLOR || (!(fmt->dwEffects & CFE_AUTOCOLOR) && old_fmt->crTextColor != fmt->crTextColor))