ChangeSet ID: 21068 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/03 03:52:29
Modified files: dlls/riched20 : wrap.c paint.c editor.h editor.c caret.c
Log message: Phil Krylov phil@newstar.rinet.ru Added support for EM_REQUESTRESIZE message, EN_REQUESTRESIZE notification, and ENM_REQUESTRESIZE event mask.
Patch: http://cvs.winehq.org/patch.py?id=21068
Old revision New revision Changes Path 1.10 1.11 +27 -0 wine/dlls/riched20/wrap.c 1.14 1.15 +2 -0 wine/dlls/riched20/paint.c 1.21 1.22 +1 -0 wine/dlls/riched20/editor.h 1.65 1.66 +6 -3 wine/dlls/riched20/editor.c 1.14 1.15 +4 -0 wine/dlls/riched20/caret.c
Index: wine/dlls/riched20/wrap.c diff -u -p wine/dlls/riched20/wrap.c:1.10 wine/dlls/riched20/wrap.c:1.11 --- wine/dlls/riched20/wrap.c:1.10 3 Nov 2005 9:52:29 -0000 +++ wine/dlls/riched20/wrap.c 3 Nov 2005 9:52:29 -0000 @@ -448,9 +448,36 @@ BOOL ME_WrapMarkedParagraphs(ME_TextEdit } editor->sizeWindow.cx = c.rcView.right-c.rcView.left; editor->sizeWindow.cy = c.rcView.bottom-c.rcView.top; + editor->nTotalLength = c.pt.y;
ME_DestroyContext(&c); ReleaseDC(hWnd, hDC); return bModified; } + + +void +ME_SendRequestResize(ME_TextEditor *editor, BOOL force) +{ + if (editor->nEventMask & ENM_REQUESTRESIZE) + { + RECT rc; + + GetClientRect(editor->hWnd, &rc); + + if (force || rc.bottom != editor->nTotalLength) + { + REQRESIZE info; + + info.nmhdr.hwndFrom = editor->hWnd; + info.nmhdr.idFrom = GetWindowLongW(editor->hWnd, GWLP_ID); + info.nmhdr.code = EN_REQUESTRESIZE; + info.rc = rc; + info.rc.bottom = editor->nTotalLength; + + SendMessageW(GetParent(editor->hWnd), WM_NOTIFY, + info.nmhdr.idFrom, (LPARAM)&info); + } + } +} Index: wine/dlls/riched20/paint.c diff -u -p wine/dlls/riched20/paint.c:1.14 wine/dlls/riched20/paint.c:1.15 --- wine/dlls/riched20/paint.c:1.14 3 Nov 2005 9:52:29 -0000 +++ wine/dlls/riched20/paint.c 3 Nov 2005 9:52:29 -0000 @@ -90,6 +90,8 @@ void ME_PaintContent(ME_TextEditor *edit if (ys == c.pt.y) /* don't overwrite the top bar */ ys++; } + if (editor->nTotalLength != editor->nLastTotalLength) + ME_SendRequestResize(editor, FALSE); editor->nLastTotalLength = editor->nTotalLength; ME_DestroyContext(&c); } Index: wine/dlls/riched20/editor.h diff -u -p wine/dlls/riched20/editor.h:1.21 wine/dlls/riched20/editor.h:1.22 --- wine/dlls/riched20/editor.h:1.21 3 Nov 2005 9:52:29 -0000 +++ wine/dlls/riched20/editor.h 3 Nov 2005 9:52:29 -0000 @@ -173,6 +173,7 @@ ME_DisplayItem *ME_MakeRow(int height, i void ME_InsertRowStart(ME_WrapContext *wc, ME_DisplayItem *pEnd); void ME_WrapTextParagraph(ME_Context *c, ME_DisplayItem *tp); BOOL ME_WrapMarkedParagraphs(ME_TextEditor *editor); +void ME_SendRequestResize(ME_TextEditor *editor, BOOL force);
/* para.c */ ME_DisplayItem *ME_GetParagraph(ME_DisplayItem *run); Index: wine/dlls/riched20/editor.c diff -u -p wine/dlls/riched20/editor.c:1.65 wine/dlls/riched20/editor.c:1.66 --- wine/dlls/riched20/editor.c:1.65 3 Nov 2005 9:52:29 -0000 +++ wine/dlls/riched20/editor.c 3 Nov 2005 9:52:29 -0000 @@ -83,7 +83,7 @@ - EM_PASTESPECIAL + EM_POSFROMCHAR + EM_REDO 2.0 - - EM_REQUESTRESIZE + + EM_REQUESTRESIZE + EM_REPLACESEL (proper style?) ANSI&Unicode - EM_SCROLL - EM_SCROLLCARET @@ -153,7 +153,7 @@ - EN_MSGFILTER - EN_OLEOPFAILED - EN_PROTECTED - - EN_REQUESTRESIZE + + EN_REQUESTRESIZE - EN_SAVECLIPBOARD + EN_SELCHANGE + EN_SETFOCUS @@ -633,6 +633,7 @@ static LRESULT ME_StreamIn(ME_TextEditor } ME_MoveCaret(editor); ME_SendSelChange(editor); + ME_SendRequestResize(editor, FALSE);
return 0; } @@ -1134,7 +1135,6 @@ LRESULT WINAPI RichEditANSIWndProc(HWND UNSUPPORTED_MSG(EM_HIDESELECTION) UNSUPPORTED_MSG(EM_LIMITTEXT) /* also known as EM_SETLIMITTEXT */ UNSUPPORTED_MSG(EM_PASTESPECIAL) - UNSUPPORTED_MSG(EM_REQUESTRESIZE) UNSUPPORTED_MSG(EM_SCROLL) UNSUPPORTED_MSG(EM_SCROLLCARET) UNSUPPORTED_MSG(EM_SELECTIONTYPE) @@ -1974,6 +1974,9 @@ LRESULT WINAPI RichEditANSIWndProc(HWND ME_RewrapRepaint(editor); return 0; } + case EM_REQUESTRESIZE: + ME_SendRequestResize(editor, TRUE); + return 0; case WM_SETREDRAW: editor->bRedraw = wParam; return 0; Index: wine/dlls/riched20/caret.c diff -u -p wine/dlls/riched20/caret.c:1.14 wine/dlls/riched20/caret.c:1.15 --- wine/dlls/riched20/caret.c:1.14 3 Nov 2005 9:52:29 -0000 +++ wine/dlls/riched20/caret.c 3 Nov 2005 9:52:29 -0000 @@ -1097,6 +1097,7 @@ BOOL ME_ArrowKey(ME_TextEditor *editor, editor->bCaretAtEnd = FALSE; /* FIXME or maybe not */ ME_DeleteSelection(editor); ME_UpdateRepaint(editor); + ME_SendRequestResize(editor, FALSE); return TRUE; } if (ME_ArrowLeft(editor, p)) { @@ -1105,6 +1106,7 @@ BOOL ME_ArrowKey(ME_TextEditor *editor, ME_MoveCaret(editor); ME_DeleteTextAtCursor(editor, nCursor, 1); ME_UpdateRepaint(editor); + ME_SendRequestResize(editor, FALSE); } return TRUE; } @@ -1117,11 +1119,13 @@ BOOL ME_ArrowKey(ME_TextEditor *editor, ME_DeleteSelection(editor); ME_ClearTempStyle(editor); ME_UpdateRepaint(editor); + ME_SendRequestResize(editor, FALSE); return TRUE; } ME_DeleteTextAtCursor(editor, nCursor, 1); ME_ClearTempStyle(editor); ME_UpdateRepaint(editor); + ME_SendRequestResize(editor, FALSE); return TRUE; } case VK_HOME: {