riched20: Declare some functions static.

This commit is contained in:
Andrew Talbot 2009-01-12 21:48:01 +00:00 committed by Alexandre Julliard
parent b0f2bebc4c
commit 8ddf6c0a25
3 changed files with 135 additions and 147 deletions

View File

@ -782,7 +782,7 @@ ME_MoveCursorWords(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs)
}
void
static void
ME_SelectByType(ME_TextEditor *editor, ME_SelectionType selectionType)
{
/* pCursor[0] is the end of the selection
@ -1335,6 +1335,31 @@ ME_MoveCursorLines(ME_TextEditor *editor, ME_Cursor *pCursor, int nRelOfs)
assert(pCursor->pRun->type == diRun);
}
static BOOL ME_UpdateSelection(ME_TextEditor *editor, const ME_Cursor *pTempCursor)
{
ME_Cursor old_anchor = editor->pCursors[1];
if (GetKeyState(VK_SHIFT)>=0) /* cancelling selection */
{
/* any selection was present ? if so, it's no more, repaint ! */
editor->pCursors[1] = editor->pCursors[0];
if (memcmp(pTempCursor, &old_anchor, sizeof(ME_Cursor))) {
return TRUE;
}
return FALSE;
}
else
{
if (!memcmp(pTempCursor, &editor->pCursors[1], sizeof(ME_Cursor))) /* starting selection */
{
editor->pCursors[1] = *pTempCursor;
return TRUE;
}
}
ME_Repaint(editor);
return TRUE;
}
static void ME_ArrowPageUp(ME_TextEditor *editor, ME_Cursor *pCursor)
{
@ -1522,32 +1547,6 @@ static int ME_GetSelCursor(ME_TextEditor *editor, int dir)
return 1;
}
BOOL ME_UpdateSelection(ME_TextEditor *editor, const ME_Cursor *pTempCursor)
{
ME_Cursor old_anchor = editor->pCursors[1];
if (GetKeyState(VK_SHIFT)>=0) /* cancelling selection */
{
/* any selection was present ? if so, it's no more, repaint ! */
editor->pCursors[1] = editor->pCursors[0];
if (memcmp(pTempCursor, &old_anchor, sizeof(ME_Cursor))) {
return TRUE;
}
return FALSE;
}
else
{
if (!memcmp(pTempCursor, &editor->pCursors[1], sizeof(ME_Cursor))) /* starting selection */
{
editor->pCursors[1] = *pTempCursor;
return TRUE;
}
}
ME_Repaint(editor);
return TRUE;
}
void ME_DeleteSelection(ME_TextEditor *editor)
{
int from, to;

View File

@ -240,6 +240,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(richedit);
static BOOL ME_RegisterEditorClass(HINSTANCE);
static BOOL ME_UpdateLinkAttribute(ME_TextEditor *editor, int sel_min, int sel_max);
static const WCHAR RichEdit20W[] = {'R', 'i', 'c', 'h', 'E', 'd', 'i', 't', '2', '0', 'W', 0};
static const WCHAR RichEdit50W[] = {'R', 'i', 'c', 'h', 'E', 'd', 'i', 't', '5', '0', 'W', 0};
@ -2114,6 +2115,42 @@ ME_FilterEvent(ME_TextEditor *editor, UINT msg, WPARAM* wParam, LPARAM* lParam)
return TRUE;
}
static void ME_UpdateSelectionLinkAttribute(ME_TextEditor *editor)
{
ME_DisplayItem * startPara, * endPara;
ME_DisplayItem * item;
int dummy;
int from, to;
ME_GetSelection(editor, &from, &to);
if (from > to) from ^= to, to ^=from, from ^= to;
startPara = NULL; endPara = NULL;
/* Find paragraph previous to the one that contains start cursor */
item = ME_FindItemAtOffset(editor, diRun, from, &dummy);
if (item) {
startPara = ME_FindItemBack(item, diParagraph);
item = ME_FindItemBack(startPara, diParagraph);
if (item) startPara = item;
}
/* Find paragraph that contains end cursor */
item = ME_FindItemAtOffset(editor, diRun, to, &dummy);
if (item) {
endPara = ME_FindItemFwd(item, diParagraph);
}
if (startPara && endPara) {
ME_UpdateLinkAttribute(editor,
startPara->member.para.nCharOfs,
endPara->member.para.nCharOfs);
} else if (startPara) {
ME_UpdateLinkAttribute(editor,
startPara->member.para.nCharOfs,
-1);
}
}
static BOOL
ME_KeyDown(ME_TextEditor *editor, WORD nKey)
{
@ -2620,7 +2657,7 @@ static BOOL ME_ShowContextMenu(ME_TextEditor *editor, int x, int y)
return TRUE;
}
ME_TextEditor *ME_MakeEditor(HWND hWnd, BOOL bEmulateVersion10)
static ME_TextEditor *ME_MakeEditor(HWND hWnd, BOOL bEmulateVersion10)
{
ME_TextEditor *ed = ALLOC_OBJ(ME_TextEditor);
int i;
@ -2705,7 +2742,7 @@ ME_TextEditor *ME_MakeEditor(HWND hWnd, BOOL bEmulateVersion10)
return ed;
}
void ME_DestroyEditor(ME_TextEditor *editor)
static void ME_DestroyEditor(ME_TextEditor *editor)
{
ME_DisplayItem *pFirst = editor->pBuffer->pFirst;
ME_DisplayItem *p = pFirst, *pNext = NULL;
@ -2904,43 +2941,37 @@ get_msg_name(UINT msg)
return "";
}
static LRESULT RichEditWndProc_common(HWND hWnd, UINT msg, WPARAM wParam,
LPARAM lParam, BOOL unicode)
void ME_LinkNotify(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam)
{
ME_TextEditor *editor;
HRESULT hresult;
LRESULT lresult;
int x,y;
ME_Cursor tmpCursor;
BOOL isExact;
int nCharOfs; /* The start of the clicked text. Absolute character offset */
TRACE("enter hwnd %p msg %04x (%s) %lx %lx, unicode %d\n",
hWnd, msg, get_msg_name(msg), wParam, lParam, unicode);
ME_Run *tmpRun;
editor = (ME_TextEditor *)GetWindowLongPtrW(hWnd, 0);
if (!editor)
{
if (msg == WM_NCCREATE)
{
CREATESTRUCTW *pcs = (CREATESTRUCTW *)lParam;
TRACE("WM_NCCREATE: hWnd %p style 0x%08x\n", hWnd, pcs->style);
editor = ME_MakeEditor(hWnd, FALSE);
SetWindowLongPtrW(hWnd, 0, (LONG_PTR)editor);
return TRUE;
}
else if (msg != WM_NCDESTROY)
{
ERR("called with invalid hWnd %p - application bug?\n", hWnd);
return 0;
}
ENLINK info;
x = (short)LOWORD(lParam);
y = (short)HIWORD(lParam);
nCharOfs = ME_CharFromPos(editor, x, y, &isExact);
if (!isExact) return;
ME_CursorFromCharOfs(editor, nCharOfs, &tmpCursor);
tmpRun = &tmpCursor.pRun->member.run;
if ((tmpRun->style->fmt.dwMask & CFM_LINK)
&& (tmpRun->style->fmt.dwEffects & CFE_LINK))
{ /* The clicked run has CFE_LINK set */
info.nmhdr.hwndFrom = editor->hWnd;
info.nmhdr.idFrom = GetWindowLongW(editor->hWnd, GWLP_ID);
info.nmhdr.code = EN_LINK;
info.msg = msg;
info.wParam = wParam;
info.lParam = lParam;
info.chrg.cpMin = ME_CharOfsFromRunOfs(editor,tmpCursor.pRun,0);
info.chrg.cpMax = info.chrg.cpMin + ME_StrVLen(tmpRun->strText);
SendMessageW(GetParent(editor->hWnd), WM_NOTIFY,info.nmhdr.idFrom, (LPARAM)&info);
}
lresult = ME_HandleMessage(editor, msg, wParam, lParam, unicode, &hresult);
if (hresult == S_FALSE)
lresult = DefWindowProcW(hWnd, msg, wParam, lParam);
TRACE("exit hwnd %p msg %04x (%s) %lx %lx, unicode %d -> %lu\n",
hWnd, msg, get_msg_name(msg), wParam, lParam, unicode, lresult);
return lresult;
}
#define UNSUPPORTED_MSG(e) \
@ -2954,7 +2985,7 @@ static LRESULT RichEditWndProc_common(HWND hWnd, UINT msg, WPARAM wParam,
* The LRESULT that is returned is a return value for window procs,
* and the phresult parameter is the COM return code needed by the
* text services interface. */
LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
static LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
LPARAM lParam, BOOL unicode, HRESULT* phresult)
{
*phresult = S_OK;
@ -4288,6 +4319,45 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
return 0L;
}
static LRESULT RichEditWndProc_common(HWND hWnd, UINT msg, WPARAM wParam,
LPARAM lParam, BOOL unicode)
{
ME_TextEditor *editor;
HRESULT hresult;
LRESULT lresult;
TRACE("enter hwnd %p msg %04x (%s) %lx %lx, unicode %d\n",
hWnd, msg, get_msg_name(msg), wParam, lParam, unicode);
editor = (ME_TextEditor *)GetWindowLongPtrW(hWnd, 0);
if (!editor)
{
if (msg == WM_NCCREATE)
{
CREATESTRUCTW *pcs = (CREATESTRUCTW *)lParam;
TRACE("WM_NCCREATE: hWnd %p style 0x%08x\n", hWnd, pcs->style);
editor = ME_MakeEditor(hWnd, FALSE);
SetWindowLongPtrW(hWnd, 0, (LONG_PTR)editor);
return TRUE;
}
else if (msg != WM_NCDESTROY)
{
ERR("called with invalid hWnd %p - application bug?\n", hWnd);
return 0;
}
}
lresult = ME_HandleMessage(editor, msg, wParam, lParam, unicode, &hresult);
if (hresult == S_FALSE)
lresult = DefWindowProcW(hWnd, msg, wParam, lParam);
TRACE("exit hwnd %p msg %04x (%s) %lx %lx, unicode %d -> %lu\n",
hWnd, msg, get_msg_name(msg), wParam, lParam, unicode, lresult);
return lresult;
}
static LRESULT WINAPI RichEditWndProcW(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
BOOL unicode = TRUE;
@ -4336,39 +4406,6 @@ void ME_SendOldNotify(ME_TextEditor *editor, int nCode)
SendMessageA(GetParent(hWnd), WM_COMMAND, MAKEWPARAM(GetWindowLongW(hWnd, GWLP_ID), nCode), (LPARAM)hWnd);
}
void ME_LinkNotify(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam)
{
int x,y;
ME_Cursor tmpCursor;
BOOL isExact;
int nCharOfs; /* The start of the clicked text. Absolute character offset */
ME_Run *tmpRun;
ENLINK info;
x = (short)LOWORD(lParam);
y = (short)HIWORD(lParam);
nCharOfs = ME_CharFromPos(editor, x, y, &isExact);
if (!isExact) return;
ME_CursorFromCharOfs(editor, nCharOfs, &tmpCursor);
tmpRun = &tmpCursor.pRun->member.run;
if ((tmpRun->style->fmt.dwMask & CFM_LINK)
&& (tmpRun->style->fmt.dwEffects & CFE_LINK))
{ /* The clicked run has CFE_LINK set */
info.nmhdr.hwndFrom = editor->hWnd;
info.nmhdr.idFrom = GetWindowLongW(editor->hWnd, GWLP_ID);
info.nmhdr.code = EN_LINK;
info.msg = msg;
info.wParam = wParam;
info.lParam = lParam;
info.chrg.cpMin = ME_CharOfsFromRunOfs(editor,tmpCursor.pRun,0);
info.chrg.cpMax = info.chrg.cpMin + ME_StrVLen(tmpRun->strText);
SendMessageW(GetParent(editor->hWnd), WM_NOTIFY,info.nmhdr.idFrom, (LPARAM)&info);
}
}
int ME_CountParagraphsBetween(ME_TextEditor *editor, int from, int to)
{
ME_DisplayItem *item = ME_FindItemFwd(editor->pBuffer->pFirst, diParagraph);
@ -4613,7 +4650,7 @@ static BOOL isurlspecial(WCHAR c)
*
* sel_max == -1 indicates scan to end of text.
*/
BOOL ME_FindNextURLCandidate(ME_TextEditor *editor, int sel_min, int sel_max,
static BOOL ME_FindNextURLCandidate(ME_TextEditor *editor, int sel_min, int sel_max,
int * candidate_min, int * candidate_max)
{
ME_DisplayItem * item;
@ -4709,7 +4746,7 @@ BOOL ME_FindNextURLCandidate(ME_TextEditor *editor, int sel_min, int sel_max,
/**
* This proc evaluates the selection and returns TRUE if it can be considered an URL
*/
BOOL ME_IsCandidateAnURL(ME_TextEditor *editor, int sel_min, int sel_max)
static BOOL ME_IsCandidateAnURL(ME_TextEditor *editor, int sel_min, int sel_max)
{
struct prefix_s {
const char *text;
@ -4761,7 +4798,7 @@ BOOL ME_IsCandidateAnURL(ME_TextEditor *editor, int sel_min, int sel_max)
*
* Returns TRUE if at least one section was modified.
*/
BOOL ME_UpdateLinkAttribute(ME_TextEditor *editor, int sel_min, int sel_max)
static BOOL ME_UpdateLinkAttribute(ME_TextEditor *editor, int sel_min, int sel_max)
{
BOOL modified = FALSE;
int cMin, cMax;
@ -4834,39 +4871,3 @@ BOOL ME_UpdateLinkAttribute(ME_TextEditor *editor, int sel_min, int sel_max)
} while (sel_min < sel_max);
return modified;
}
void ME_UpdateSelectionLinkAttribute(ME_TextEditor *editor)
{
ME_DisplayItem * startPara, * endPara;
ME_DisplayItem * item;
int dummy;
int from, to;
ME_GetSelection(editor, &from, &to);
if (from > to) from ^= to, to ^=from, from ^= to;
startPara = NULL; endPara = NULL;
/* Find paragraph previous to the one that contains start cursor */
item = ME_FindItemAtOffset(editor, diRun, from, &dummy);
if (item) {
startPara = ME_FindItemBack(item, diParagraph);
item = ME_FindItemBack(startPara, diParagraph);
if (item) startPara = item;
}
/* Find paragraph that contains end cursor */
item = ME_FindItemAtOffset(editor, diRun, to, &dummy);
if (item) {
endPara = ME_FindItemFwd(item, diParagraph);
}
if (startPara && endPara) {
ME_UpdateLinkAttribute(editor,
startPara->member.para.nCharOfs,
endPara->member.para.nCharOfs);
} else if (startPara) {
ME_UpdateLinkAttribute(editor,
startPara->member.para.nCharOfs,
-1);
}
}

View File

@ -177,7 +177,6 @@ void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod);
/* caret.c */
int ME_SetSelection(ME_TextEditor *editor, int from, int to);
void ME_SelectByType(ME_TextEditor *editor, ME_SelectionType selectionType);
void ME_HideCaret(ME_TextEditor *ed);
void ME_ShowCaret(ME_TextEditor *ed);
void ME_MoveCaret(ME_TextEditor *ed);
@ -204,7 +203,6 @@ BOOL ME_InternalDeleteText(ME_TextEditor *editor, int nOfs, int nChars, BOOL bFo
int ME_GetTextLength(ME_TextEditor *editor);
int ME_GetTextLengthEx(ME_TextEditor *editor, const GETTEXTLENGTHEX *how);
ME_Style *ME_GetSelectionInsertStyle(ME_TextEditor *editor);
BOOL ME_UpdateSelection(ME_TextEditor *editor, const ME_Cursor *pTempCursor);
/* context.c */
void ME_InitContext(ME_Context *c, ME_TextEditor *editor, HDC hDC);
@ -269,12 +267,7 @@ void ME_CopyReObject(REOBJECT* dst, const REOBJECT* src);
void ME_DeleteReObject(REOBJECT* reo);
/* editor.c */
ME_TextEditor *ME_MakeEditor(HWND hWnd, BOOL bEmulateVersion10);
void ME_DestroyEditor(ME_TextEditor *editor);
LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
LPARAM lParam, BOOL unicode, HRESULT* phresult);
void ME_SendOldNotify(ME_TextEditor *editor, int nCode);
void ME_LinkNotify(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam);
int ME_GetTextW(ME_TextEditor *editor, WCHAR *buffer, int nStart, int nChars, BOOL bCRLF);
ME_DisplayItem *ME_FindItemAtOffset(ME_TextEditor *editor, ME_DIType nItemType, int nOffset, int *nItemOffset);
void ME_RTFCharAttrHook(struct _RTF_Info *info);
@ -284,11 +277,6 @@ void ME_RTFSpecialCharHook(struct _RTF_Info *info);
void ME_StreamInFill(ME_InStream *stream);
extern int me_debug;
extern void DoWrap(ME_TextEditor *editor);
extern BOOL ME_FindNextURLCandidate(ME_TextEditor *editor, int sel_min, int sel_max,
int * candidate_min, int * candidate_max);
extern BOOL ME_IsCandidateAnURL(ME_TextEditor *editor, int sel_min, int sel_max);
BOOL ME_UpdateLinkAttribute(ME_TextEditor *editor, int sel_min, int sel_max);
void ME_UpdateSelectionLinkAttribute(ME_TextEditor *editor);
/* table.c */
BOOL ME_IsInTable(ME_DisplayItem *pItem);