Nikolay Sivov : riched20: Reduce code duplication in WM_SETTEXT/ WM_CREATE handler.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Jun 2 07:50:06 CDT 2015
Module: wine
Branch: master
Commit: 0b94369bb757305926aa46199e533d4ecc284625
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0b94369bb757305926aa46199e533d4ecc284625
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Sat May 30 09:14:18 2015 +0300
riched20: Reduce code duplication in WM_SETTEXT/WM_CREATE handler.
---
dlls/riched20/editor.c | 152 ++++++++++++++++++++++++-------------------------
1 file changed, 74 insertions(+), 78 deletions(-)
diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index 8d878a4..38861fd 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -3158,13 +3158,84 @@ void ME_ReplaceSel(ME_TextEditor *editor, BOOL can_undo, const WCHAR *str, int l
ME_UpdateRepaint(editor, FALSE);
}
+static void ME_SetText(ME_TextEditor *editor, void *text, BOOL unicode)
+{
+ LONG codepage = unicode ? CP_UNICODE : CP_ACP;
+ int textLen;
+
+ LPWSTR wszText = ME_ToUnicode(codepage, text, &textLen);
+
+ if (textLen > 0)
+ {
+ int len = -1;
+
+ /* uses default style! */
+ if (!(editor->styleFlags & ES_MULTILINE))
+ {
+ WCHAR *p = wszText;
+
+ while (*p != '\0' && *p != '\r' && *p != '\n') p++;
+ len = p - wszText;
+ }
+ ME_InsertTextFromCursor(editor, 0, wszText, len, editor->pBuffer->pDefaultStyle);
+ }
+ ME_EndToUnicode(codepage, wszText);
+}
+
+static LRESULT ME_WmCreate(ME_TextEditor *editor, LPARAM lParam, BOOL unicode)
+{
+ CREATESTRUCTW *createW = (CREATESTRUCTW*)lParam;
+ CREATESTRUCTA *createA = (CREATESTRUCTA*)lParam;
+ void *text = NULL;
+ INT max;
+
+ if (lParam)
+ text = unicode ? (void*)createW->lpszName : (void*)createA->lpszName;
+
+ ME_SetDefaultFormatRect(editor);
+
+ max = (editor->styleFlags & ES_DISABLENOSCROLL) ? 1 : 0;
+ if (~editor->styleFlags & ES_DISABLENOSCROLL || editor->styleFlags & WS_VSCROLL)
+ ITextHost_TxSetScrollRange(editor->texthost, SB_VERT, 0, max, TRUE);
+
+ if (~editor->styleFlags & ES_DISABLENOSCROLL || editor->styleFlags & WS_HSCROLL)
+ ITextHost_TxSetScrollRange(editor->texthost, SB_HORZ, 0, max, TRUE);
+
+ if (editor->styleFlags & ES_DISABLENOSCROLL)
+ {
+ if (editor->styleFlags & WS_VSCROLL)
+ {
+ ITextHost_TxEnableScrollBar(editor->texthost, SB_VERT, ESB_DISABLE_BOTH);
+ ITextHost_TxShowScrollBar(editor->texthost, SB_VERT, TRUE);
+ }
+ if (editor->styleFlags & WS_HSCROLL)
+ {
+ ITextHost_TxEnableScrollBar(editor->texthost, SB_HORZ, ESB_DISABLE_BOTH);
+ ITextHost_TxShowScrollBar(editor->texthost, SB_HORZ, TRUE);
+ }
+ }
+
+ if (text)
+ {
+ ME_SetText(editor, text, unicode);
+ ME_SetCursorToStart(editor, &editor->pCursors[0]);
+ ME_SetCursorToStart(editor, &editor->pCursors[1]);
+ }
+
+ ME_CommitUndo(editor);
+ ME_WrapMarkedParagraphs(editor);
+ ME_MoveCaret(editor);
+ return 0;
+}
+
+
#define UNSUPPORTED_MSG(e) \
case e: \
FIXME(#e ": stub\n"); \
*phresult = S_FALSE; \
return 0;
-/* Handle messages for windowless and windoweded richedit controls.
+/* Handle messages for windowless and windowed richedit controls.
*
* The LRESULT that is returned is a return value for window procs,
* and the phresult parameter is the COM return code needed by the
@@ -3689,28 +3760,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
ME_StreamInRTFString(editor, 0, (char *)lParam);
}
else
- {
- int textLen;
- LONG codepage = unicode ? CP_UNICODE : CP_ACP;
- LPWSTR wszText = ME_ToUnicode(codepage, (void *)lParam, &textLen);
- TRACE("WM_SETTEXT - %s\n", debugstr_w(wszText)); /* debugstr_w() */
- if (textLen > 0)
- {
- int len = -1;
-
- /* uses default style! */
- if (!(editor->styleFlags & ES_MULTILINE))
- {
- WCHAR * p;
-
- p = wszText;
- while (*p != '\0' && *p != '\r' && *p != '\n') p++;
- len = p - wszText;
- }
- ME_InsertTextFromCursor(editor, 0, wszText, len, editor->pBuffer->pDefaultStyle);
- }
- ME_EndToUnicode(codepage, wszText);
- }
+ ME_SetText(editor, (void*)lParam, unicode);
}
else
TRACE("WM_SETTEXT - NULL\n");
@@ -4065,61 +4115,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
return (wParam >= 0x40000) ? 0 : MAKELONG( pt.x, pt.y );
}
case WM_CREATE:
- {
- void *text = NULL;
- INT max;
-
- ME_SetDefaultFormatRect(editor);
-
- max = (editor->styleFlags & ES_DISABLENOSCROLL) ? 1 : 0;
- if (~editor->styleFlags & ES_DISABLENOSCROLL || editor->styleFlags & WS_VSCROLL)
- ITextHost_TxSetScrollRange(editor->texthost, SB_VERT, 0, max, TRUE);
-
- if (~editor->styleFlags & ES_DISABLENOSCROLL || editor->styleFlags & WS_HSCROLL)
- ITextHost_TxSetScrollRange(editor->texthost, SB_HORZ, 0, max, TRUE);
-
- if (editor->styleFlags & ES_DISABLENOSCROLL)
- {
- if (editor->styleFlags & WS_VSCROLL)
- {
- ITextHost_TxEnableScrollBar(editor->texthost, SB_VERT, ESB_DISABLE_BOTH);
- ITextHost_TxShowScrollBar(editor->texthost, SB_VERT, TRUE);
- }
- if (editor->styleFlags & WS_HSCROLL)
- {
- ITextHost_TxEnableScrollBar(editor->texthost, SB_HORZ, ESB_DISABLE_BOTH);
- ITextHost_TxShowScrollBar(editor->texthost, SB_HORZ, TRUE);
- }
- }
-
- if (lParam)
- {
- text = (unicode ? (void*)((CREATESTRUCTW*)lParam)->lpszName
- : (void*)((CREATESTRUCTA*)lParam)->lpszName);
- }
- if (text)
- {
- WCHAR *textW;
- int len;
- LONG codepage = unicode ? CP_UNICODE : CP_ACP;
- textW = ME_ToUnicode(codepage, text, &len);
- if (!(editor->styleFlags & ES_MULTILINE))
- {
- len = 0;
- while(textW[len] != '\0' && textW[len] != '\r' && textW[len] != '\n')
- len++;
- }
- ME_InsertTextFromCursor(editor, 0, textW, len, editor->pBuffer->pDefaultStyle);
- ME_EndToUnicode(codepage, textW);
- ME_SetCursorToStart(editor, &editor->pCursors[0]);
- ME_SetCursorToStart(editor, &editor->pCursors[1]);
- }
-
- ME_CommitUndo(editor);
- ME_WrapMarkedParagraphs(editor);
- ME_MoveCaret(editor);
- return 0;
- }
+ return ME_WmCreate(editor, lParam, unicode);
case WM_DESTROY:
ME_DestroyEditor(editor);
return 0;
More information about the wine-cvs
mailing list