diff --git a/dlls/riched20/caret.c b/dlls/riched20/caret.c index 5f3259e5dbe..f2ca5952487 100644 --- a/dlls/riched20/caret.c +++ b/dlls/riched20/caret.c @@ -232,21 +232,28 @@ ME_MoveCaret(ME_TextEditor *editor) ME_WrapMarkedParagraphs(editor); ME_GetCursorCoordinates(editor, &editor->pCursors[0], &x, &y, &height); - CreateCaret(editor->hWnd, NULL, 0, height); - SetCaretPos(x, y); + if(editor->bHaveFocus) + { + CreateCaret(editor->hWnd, NULL, 0, height); + SetCaretPos(x, y); + } } void ME_ShowCaret(ME_TextEditor *ed) { ME_MoveCaret(ed); - ShowCaret(ed->hWnd); + if(ed->bHaveFocus) + ShowCaret(ed->hWnd); } void ME_HideCaret(ME_TextEditor *ed) { - HideCaret(ed->hWnd); - DestroyCaret(); + if(ed->bHaveFocus) + { + HideCaret(ed->hWnd); + DestroyCaret(); + } } void ME_InternalDeleteText(ME_TextEditor *editor, int nOfs, diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c index 24febcf439d..480b5d3bc50 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -1153,6 +1153,7 @@ ME_TextEditor *ME_MakeEditor(HWND hWnd) { ed->lpOleCallback = NULL; ed->mode = TM_RICHTEXT | TM_MULTILEVELUNDO | TM_MULTICODEPAGE; ed->AutoURLDetect_bEnable = FALSE; + ed->bHaveFocus = FALSE; GetClientRect(hWnd, &ed->rcFormat); for (i=0; ibHaveFocus = TRUE; ME_ShowCaret(editor); ME_SendOldNotify(editor, EN_SETFOCUS); return 0; case WM_KILLFOCUS: ME_HideCaret(editor); + editor->bHaveFocus = FALSE; ME_SendOldNotify(editor, EN_KILLFOCUS); return 0; case WM_ERASEBKGND: diff --git a/dlls/riched20/editstr.h b/dlls/riched20/editstr.h index 9859fe78e8a..ee5dfe32944 100644 --- a/dlls/riched20/editstr.h +++ b/dlls/riched20/editstr.h @@ -321,6 +321,7 @@ typedef struct tagME_TextEditor BOOL bHideSelection; BOOL AutoURLDetect_bEnable; WCHAR cPasswordMask; + BOOL bHaveFocus; } ME_TextEditor; typedef struct tagME_Context