[PATCH] richedit: fix failing EM_GETCHARFORMAT test on all platforms.

Alex Villacís Lasso alex at karlalex.palosanto.com
Wed Jun 25 01:22:00 CDT 2008


Default richedit font (System) in Windows causes richedit to report CFM_BOLD as always set. Switch to Courier New in order to see that richedit really sets the CFM_BOLD attribute in the correct selection.
---
 dlls/riched20/tests/editor.c |   32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/dlls/riched20/tests/editor.c b/dlls/riched20/tests/editor.c
index bbdba4d..553db86 100644
--- a/dlls/riched20/tests/editor.c
+++ b/dlls/riched20/tests/editor.c
@@ -657,6 +657,27 @@ static void test_EM_SETCHARFORMAT(void)
     hwndRichEdit = new_richedit(NULL);
     SendMessage(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)"wine");
 
+    /* Need to set a TrueType font to get consistent CFM_BOLD results */
+    memset(&cf2, 0, sizeof(CHARFORMAT2));
+    cf2.cbSize = sizeof(CHARFORMAT2);
+    cf2.dwMask = CFM_FACE|CFM_WEIGHT;
+    cf2.dwEffects = 0;
+    strcpy(cf2.szFaceName, "Courier New");
+    cf2.wWeight = FW_DONTCARE;
+    SendMessage(hwndRichEdit, EM_SETCHARFORMAT, SCF_ALL, (LPARAM) &cf2);
+
+    memset(&cf2, 0, sizeof(CHARFORMAT2));
+    cf2.cbSize = sizeof(CHARFORMAT2);
+    SendMessage(hwndRichEdit, EM_SETSEL, 0, 4);
+    SendMessage(hwndRichEdit, EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf2);
+    ok ((((tested_effects[i] == CFE_SUBSCRIPT || tested_effects[i] == CFE_SUPERSCRIPT) &&
+          (cf2.dwMask & CFM_SUPERSCRIPT) == CFM_SUPERSCRIPT)
+          ||
+          (cf2.dwMask & tested_effects[i]) == tested_effects[i]),
+        "%d, cf2.dwMask == 0x%08x expected mask 0x%08x\n", i, cf2.dwMask, tested_effects[i]);
+    ok((cf2.dwEffects & tested_effects[i]) == 0,
+        "%d, cf2.dwEffects == 0x%08x expected effect 0x%08x clear\n", i, cf2.dwEffects, tested_effects[i]);
+
     memset(&cf2, 0, sizeof(CHARFORMAT2));
     cf2.cbSize = sizeof(CHARFORMAT2);
     cf2.dwMask = tested_effects[i];
@@ -699,8 +720,6 @@ static void test_EM_SETCHARFORMAT(void)
           ||
           (cf2.dwMask & tested_effects[i]) == 0),
         "%d, cf2.dwMask == 0x%08x expected mask 0x%08x clear\n", i, cf2.dwMask, tested_effects[i]);
-    ok((cf2.dwEffects & tested_effects[i]) == 0,
-        "%d, cf2.dwEffects == 0x%08x expected effect 0x%08x clear\n", i, cf2.dwEffects, tested_effects[i]);
 
     DestroyWindow(hwndRichEdit);
   }
@@ -710,6 +729,15 @@ static void test_EM_SETCHARFORMAT(void)
     hwndRichEdit = new_richedit(NULL);
     SendMessage(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)"wine");
 
+    /* Need to set a TrueType font to get consistent CFM_BOLD results */
+    memset(&cf2, 0, sizeof(CHARFORMAT2));
+    cf2.cbSize = sizeof(CHARFORMAT2);
+    cf2.dwMask = CFM_FACE|CFM_WEIGHT;
+    cf2.dwEffects = 0;
+    strcpy(cf2.szFaceName, "Courier New");
+    cf2.wWeight = FW_DONTCARE;
+    SendMessage(hwndRichEdit, EM_SETCHARFORMAT, SCF_ALL, (LPARAM) &cf2);
+
     memset(&cf2, 0, sizeof(CHARFORMAT2));
     cf2.cbSize = sizeof(CHARFORMAT2);
     cf2.dwMask = tested_effects[i];
-- 
1.5.4.1


--------------010307010201040305080304--



More information about the wine-devel mailing list