[PATCH 3/5] riched20: Handle WM_SETTEXT's unicode conversion in the host.

Huw Davies huw at codeweavers.com
Wed Mar 10 03:31:18 CST 2021


Signed-off-by: Huw Davies <huw at codeweavers.com>
---
 dlls/riched20/editor.c  |  2 +-
 dlls/riched20/txthost.c | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index 9ac5d49a3db..cacad463963 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -3953,7 +3953,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
         ME_StreamInRTFString(editor, 0, (char *)lParam);
       }
       else
-        ME_SetText(editor, (void*)lParam, unicode);
+        ME_SetText( editor, (void*)lParam, TRUE );
     }
     else
       TRACE("WM_SETTEXT - NULL\n");
diff --git a/dlls/riched20/txthost.c b/dlls/riched20/txthost.c
index 14cb19e8f45..23c9962bb3a 100644
--- a/dlls/riched20/txthost.c
+++ b/dlls/riched20/txthost.c
@@ -863,6 +863,18 @@ static LRESULT RichEditWndProc_common( HWND hwnd, UINT msg, WPARAM wparam,
         SetWindowLongW( hwnd, GWL_STYLE, style );
         return res;
     }
+    case WM_SETTEXT:
+    {
+        char *textA = (char *)lparam;
+        WCHAR *text = (WCHAR *)lparam;
+        int len;
+
+        if (!unicode && textA && strncmp( textA, "{\\rtf", 5 ) && strncmp( textA, "{\\urtf", 6 ))
+            text = ME_ToUnicode( CP_ACP, textA, &len );
+        hr = ITextServices_TxSendMessage( host->text_srv, msg, wparam, (LPARAM)text, &res );
+        if (text != (WCHAR *)lparam) ME_EndToUnicode( CP_ACP, text );
+        break;
+    }
     default:
         res = ME_HandleMessage( editor, msg, wparam, lparam, unicode, &hr );
     }
-- 
2.23.0




More information about the wine-devel mailing list