diff --git a/reactos/dll/win32/riched20/caret.c b/reactos/dll/win32/riched20/caret.c index 043a32a0d64..e3e42cc85f7 100644 --- a/reactos/dll/win32/riched20/caret.c +++ b/reactos/dll/win32/riched20/caret.c @@ -710,7 +710,7 @@ int ME_MoveCursorChars(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs) } -static BOOL +BOOL ME_MoveCursorWords(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs) { ME_DisplayItem *pRun = cursor->pRun, *pOtherRun; diff --git a/reactos/dll/win32/riched20/editor.c b/reactos/dll/win32/riched20/editor.c index 686c50388fe..92eb0206381 100644 --- a/reactos/dll/win32/riched20/editor.c +++ b/reactos/dll/win32/riched20/editor.c @@ -3506,8 +3506,12 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, if (editor->mode & TM_PLAINTEXT) return 0; if (wParam & SCF_WORD) { - FIXME("EM_SETCHARFORMAT: word selection not supported\n"); - return 0; + ME_Cursor start; + ME_Cursor end = editor->pCursors[0]; + ME_MoveCursorWords(editor, &end, +1); + start = end; + ME_MoveCursorWords(editor, &start, -1); + ME_SetCharFormat(editor, &start, &end, p); } bRepaint = ME_IsSelection(editor); ME_SetSelectionCharFormat(editor, p); diff --git a/reactos/dll/win32/riched20/editor.h b/reactos/dll/win32/riched20/editor.h index 6048ab678f0..1b78ff0380e 100644 --- a/reactos/dll/win32/riched20/editor.h +++ b/reactos/dll/win32/riched20/editor.h @@ -201,6 +201,7 @@ void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod) DECLSPEC_ /* caret.c */ void ME_SetCursorToStart(ME_TextEditor *editor, ME_Cursor *cursor) DECLSPEC_HIDDEN; int ME_SetSelection(ME_TextEditor *editor, int from, int to) DECLSPEC_HIDDEN; +BOOL ME_MoveCursorWords(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs) DECLSPEC_HIDDEN; void ME_HideCaret(ME_TextEditor *ed) DECLSPEC_HIDDEN; void ME_ShowCaret(ME_TextEditor *ed) DECLSPEC_HIDDEN; void ME_MoveCaret(ME_TextEditor *ed) DECLSPEC_HIDDEN;