From 03fa4cfaffd4c10f56a2f8bfd383f4eaf67d364c Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Wed, 1 Jun 2016 12:35:38 +0100 Subject: [PATCH] riched20: Add support for quoting urls with spaces within '<' '>'. Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- dlls/riched20/editor.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c index d4ca570af67..a07dd7f199f 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -5038,8 +5038,8 @@ static BOOL ME_FindNextURLCandidate(ME_TextEditor *editor, ME_Cursor *candidate_min, ME_Cursor *candidate_max) { - ME_Cursor cursor = *start, neutral_end; - BOOL candidateStarted = FALSE; + ME_Cursor cursor = *start, neutral_end, space_end; + BOOL candidateStarted = FALSE, quoted = FALSE; WCHAR c; while (nChars > 0) @@ -5060,9 +5060,11 @@ static BOOL ME_FindNextURLCandidate(ME_TextEditor *editor, *candidate_min = cursor; candidateStarted = TRUE; neutral_end.pPara = NULL; + space_end.pPara = NULL; cursor.nOffset++; break; } + quoted = (c == '<'); cursor.nOffset++; } } @@ -5074,9 +5076,28 @@ static BOOL ME_FindNextURLCandidate(ME_TextEditor *editor, { c = str[cursor.nOffset]; if (isspaceW( c )) - goto done; + { + if (quoted && c != '\r') + { + if (!space_end.pPara) + { + if (neutral_end.pPara) + space_end = neutral_end; + else + space_end = cursor; + } + } + else + goto done; + } else if (isurlneutral( c )) { + if (quoted && c == '>') + { + neutral_end.pPara = NULL; + space_end.pPara = NULL; + goto done; + } if (!neutral_end.pPara) neutral_end = cursor; } @@ -5095,7 +5116,9 @@ static BOOL ME_FindNextURLCandidate(ME_TextEditor *editor, done: if (candidateStarted) { - if (neutral_end.pPara) + if (space_end.pPara) + *candidate_max = space_end; + else if (neutral_end.pPara) *candidate_max = neutral_end; else *candidate_max = cursor; -- 2.11.4.GIT