Dylan Smith : richedit: Respect manually added links when autourldetect is disabled.
Alexandre Julliard
julliard at winehq.org
Mon Mar 9 09:40:37 CDT 2009
Module: wine
Branch: master
Commit: fdb37491386dc2a21717e38ec60309437da9e2e9
URL: http://source.winehq.org/git/wine.git/?a=commit;h=fdb37491386dc2a21717e38ec60309437da9e2e9
Author: Dylan Smith <dylan.ah.smith at gmail.com>
Date: Mon Mar 9 03:01:00 2009 -0400
richedit: Respect manually added links when autourldetect is disabled.
EM_SETCHARFORMAT can be used to make text links. Automatic URL
detection being enable would cause these links to be removed if the text
is not a URL, so this must be prevented.
Previously checks were made for AutoURLDetect_bEnable before calling
ME_UpdateSelectionLinkAttribute, or ME_UpdateLinkAttribute. This is
more error prone than checking for this within the function, so one call
was missing this check.
ME_SetCursor also didn't respect this behaviour, since it wouldn't set
the cursor to the hand when hovering over a link without automatic URL
detection disabled.
---
dlls/riched20/editor.c | 50 +++++++++++++++++++++--------------------------
1 files changed, 22 insertions(+), 28 deletions(-)
diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index 93d0c34..c9cb244 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -2040,6 +2040,8 @@ static void ME_UpdateSelectionLinkAttribute(ME_TextEditor *editor)
ME_DisplayItem *prev_para;
int from, to;
+ if (!editor->AutoURLDetect_bEnable) return;
+
ME_GetSelection(editor, &from, &to);
/* Find paragraph previous to the one that contains start cursor */
@@ -2235,9 +2237,7 @@ ME_KeyDown(ME_TextEditor *editor, WORD nKey)
ME_CommitCoalescingUndo(editor);
SetCursor(NULL);
- if (editor->AutoURLDetect_bEnable)
- ME_UpdateSelectionLinkAttribute(editor);
-
+ ME_UpdateSelectionLinkAttribute(editor);
ME_UpdateRepaint(editor);
}
return TRUE;
@@ -2396,8 +2396,7 @@ static LRESULT ME_Char(ME_TextEditor *editor, WPARAM charCode,
ITextHost_TxSetCursor(editor->texthost, NULL, FALSE);
}
- if (editor->AutoURLDetect_bEnable) ME_UpdateSelectionLinkAttribute(editor);
-
+ ME_UpdateSelectionLinkAttribute(editor);
ME_UpdateRepaint(editor);
}
return 0;
@@ -2518,22 +2517,20 @@ static BOOL ME_SetCursor(ME_TextEditor *editor)
offset = ME_CharFromPos(editor, pt.x, pt.y, &isExact);
if (isExact)
{
- if (editor->AutoURLDetect_bEnable)
+ ME_Cursor cursor;
+ ME_Run *run;
+
+ ME_CursorFromCharOfs(editor, offset, &cursor);
+ run = &cursor.pRun->member.run;
+ if (run->style->fmt.dwMask & CFM_LINK &&
+ run->style->fmt.dwEffects & CFE_LINK)
{
- ME_Cursor cursor;
- ME_Run *run;
- ME_CursorFromCharOfs(editor, offset, &cursor);
- run = &cursor.pRun->member.run;
- if (editor->AutoURLDetect_bEnable &&
- run->style->fmt.dwMask & CFM_LINK &&
- run->style->fmt.dwEffects & CFE_LINK)
- {
- ITextHost_TxSetCursor(editor->texthost,
- LoadCursorW(NULL, (WCHAR*)IDC_HAND),
- FALSE);
- return TRUE;
- }
+ ITextHost_TxSetCursor(editor->texthost,
+ LoadCursorW(NULL, (WCHAR*)IDC_HAND),
+ FALSE);
+ return TRUE;
}
+
if (ME_IsSelection(editor))
{
int selStart, selEnd;
@@ -3234,12 +3231,10 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
if (bSelection) {
ME_ReleaseStyle(style);
- if (editor->AutoURLDetect_bEnable)
- ME_UpdateSelectionLinkAttribute(editor);
+ ME_UpdateSelectionLinkAttribute(editor);
} else {
len = 1;
- if (editor->AutoURLDetect_bEnable)
- ME_UpdateLinkAttribute(editor, 0, -1);
+ ME_UpdateLinkAttribute(editor, 0, -1);
}
ME_CommitUndo(editor);
if (!(pStruct->flags & ST_KEEPUNDO))
@@ -3433,7 +3428,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
ME_ClearTempStyle(editor);
ME_EndToUnicode(unicode, wszText);
ME_CommitUndo(editor);
- if (editor->AutoURLDetect_bEnable) ME_UpdateSelectionLinkAttribute(editor);
+ ME_UpdateSelectionLinkAttribute(editor);
if (!wParam)
ME_EmptyUndoStack(editor);
ME_UpdateRepaint(editor);
@@ -3501,10 +3496,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
}
else
TRACE("WM_SETTEXT - NULL\n");
- if (editor->AutoURLDetect_bEnable)
- {
- ME_UpdateLinkAttribute(editor, 0, -1);
- }
+ ME_UpdateLinkAttribute(editor, 0, -1);
ME_SetSelection(editor, 0, 0);
editor->nModifyStep = 0;
ME_CommitUndo(editor);
@@ -4850,6 +4842,8 @@ static BOOL ME_UpdateLinkAttribute(ME_TextEditor *editor, int sel_min, int sel_m
BOOL modified = FALSE;
int cMin, cMax;
+ if (!editor->AutoURLDetect_bEnable) return FALSE;
+
if (sel_max == -1) sel_max = ME_GetTextLength(editor);
do
{
More information about the wine-cvs
mailing list