richedit: Use ME_EnsureVisible to implement EM_SCROLLCARET.

The code for the ME_EnsureVisible function does exactly what
EM_SCROLLCARET does, yet this code is duplicated in order to handle
this message.  It is simpler to just use the existing function to
implement the message, and avoid internally sending the EM_SCROLLCARET
when this function is available.
This commit is contained in:
Dylan Smith 2008-12-15 04:31:43 -05:00 committed by Alexandre Julliard
parent 098f2f231d
commit 6901e0cec7
2 changed files with 4 additions and 25 deletions

View File

@ -1177,16 +1177,10 @@ void ME_MouseMove(ME_TextEditor *editor, int x, int y)
memcmp(&editor->pCursors[1], &editor->pCursors[3], sizeof(ME_Cursor))) memcmp(&editor->pCursors[1], &editor->pCursors[3], sizeof(ME_Cursor)))
{ {
/* The scroll the cursor towards the other end, since it was the one /* The scroll the cursor towards the other end, since it was the one
* extended by ME_ExtendAnchorSelection * extended by ME_ExtendAnchorSelection */
*/ ME_EnsureVisible(editor, editor->pCursors[1].pRun);
ME_Cursor tmpCursor = editor->pCursors[0];
editor->pCursors[0] = editor->pCursors[1];
editor->pCursors[1] = tmpCursor;
SendMessageW(editor->hWnd, EM_SCROLLCARET, 0, 0);
editor->pCursors[1] = editor->pCursors[0];
editor->pCursors[0] = tmpCursor;
} else { } else {
SendMessageW(editor->hWnd, EM_SCROLLCARET, 0, 0); ME_EnsureVisible(editor, editor->pCursors[0].pRun);
} }
ME_InvalidateSelection(editor); ME_InvalidateSelection(editor);

View File

@ -3064,23 +3064,8 @@ static LRESULT RichEditWndProc_common(HWND hWnd, UINT msg, WPARAM wParam,
return len; return len;
} }
case EM_SCROLLCARET: case EM_SCROLLCARET:
{ ME_EnsureVisible(editor, editor->pCursors[0].pRun);
int top, bottom; /* row's edges relative to document top */
int nPos;
ME_DisplayItem *para, *row;
nPos = ME_GetYScrollPos(editor);
row = ME_RowStart(editor->pCursors[0].pRun);
para = ME_GetParagraph(row);
top = para->member.para.pt.y + row->member.row.pt.y;
bottom = top + row->member.row.nHeight;
if (top < nPos) /* caret above window */
ME_ScrollAbs(editor, top);
else if (nPos + editor->sizeWindow.cy < bottom) /*below*/
ME_ScrollAbs(editor, bottom - editor->sizeWindow.cy);
return 0; return 0;
}
case WM_SETFONT: case WM_SETFONT:
{ {
LOGFONTW lf; LOGFONTW lf;