Merge pull request #215 from RaiKoHoff/Hyperlink_Fixes

Hyperlink fixes
This commit is contained in:
Derick Payne 2017-12-10 22:24:06 +02:00 committed by GitHub
commit d39e6f1f3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 18 deletions

View File

@ -82,6 +82,7 @@ extern BOOL bLoadNFOasOEM;
extern BOOL bAccelWordNavigation;
extern BOOL bDenyVirtualSpaceAccess;
extern BOOL bHyperlinkHotspot;
extern int iMarkOccurrences;
extern int iMarkOccurrencesCount;
@ -5794,6 +5795,8 @@ void EditCompleteWord(HWND hwnd, BOOL autoInsert) {
//
void EditUpdateUrlHotspots(HWND hwnd, int startPos, int endPos)
{
if (!bHyperlinkHotspot) return;
const char* pszUrlRegEx = "\\b(?:(?:https?|ftp|file)://|www\\.|ftp\\.)"
"(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*"
"(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#/%=~_|$])";

View File

@ -4023,7 +4023,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_SelectLexerDlg(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4031,7 +4030,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_ToggleUse2ndDefault(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4039,7 +4037,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_ConfigDlg(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4047,7 +4044,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_SetDefaultFont(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4779,7 +4775,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_SetDefaultLexer(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4787,7 +4782,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_SetHTMLLexer(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4795,7 +4789,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_SetXMLLexer(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -5681,8 +5674,12 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam)
RestoreSelectionAction(scn->token,REDO);
}
}
else if (scn->modificationType & SC_MOD_CHANGESTYLE) {
EditUpdateUrlHotspots(hwndEdit, (int)scn->position, (int)(scn->position + scn->length));
}
if (scn->linesAdded != 0) {
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
}
bModified = TRUE;
break;

View File

@ -3160,7 +3160,7 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) {
SciCall_SetProperty("fold.cpp.comment.explicit", "0");
// Add KeyWord Lists
for (int i = 0; i < 9; i++)
for (int i = 0; i < (KEYWORDSET_MAX + 1); i++)
SendMessage(hwnd, SCI_SETKEYWORDS, i, (LPARAM)pLexNew->pKeyWords->pszKeyWords[i]);
// Use 2nd default style
@ -3171,7 +3171,6 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) {
fIsConsolasAvailable = IsFontAvailable(L"Consolas");
// Clear
SendMessage(hwnd, SCI_STYLECLEARALL, 0, 0);
SendMessage(hwnd, SCI_CLEARDOCUMENTSTYLE, 0, 0);
// Idle Styling (very large text)
@ -3186,7 +3185,7 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) {
Style_StrGetSize(lexDefault.Styles[STY_DEFAULT + iIdx].szValue, &iBaseFontSize); // base size
// Auto-select codepage according to charset
//Style_SetACPfromCharSet(hwnd);
//~Style_SetACPfromCharSet(hwnd);
if (!Style_StrGetColor(TRUE, lexDefault.Styles[STY_DEFAULT + iIdx].szValue, &iValue))
SendMessage(hwnd, SCI_STYLESETFORE, STYLE_DEFAULT, (LPARAM)GetSysColor(COLOR_WINDOWTEXT)); // default text color
@ -3195,6 +3194,9 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) {
if (pLexNew->iLexer != SCLEX_NULL || pLexNew == &lexANSI)
Style_SetStyles(hwnd, pLexNew->Styles[STY_DEFAULT].iStyle, pLexNew->Styles[STY_DEFAULT].szValue); // lexer default
// Reset
SendMessage(hwnd, SCI_STYLECLEARALL, 0, 0);
Style_SetStyles(hwnd, lexDefault.Styles[STY_MARGIN + iIdx].iStyle, lexDefault.Styles[STY_MARGIN + iIdx].szValue); // linenumber
@ -3552,15 +3554,18 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) {
}
}
// set URL Hotspot style
Style_SetUrlHotSpot(hwnd, bHyperlinkHotspot);
// apply lexer styles
SendMessage(hwnd, SCI_COLOURISE, 0, (LPARAM)-1);
SendMessage(hwnd,SCI_COLOURISE,0,(LPARAM)-1);
EditUpdateUrlHotspots(hwnd, 0, SciCall_GetTextLength());
// override hyperlink hotspot style
if (bHyperlinkHotspot) {
Style_SetUrlHotSpot(hwnd, bHyperlinkHotspot);
EditUpdateUrlHotspots(hwnd, 0, SciCall_GetTextLength());
}
// Save current lexer
pLexCurrent = pLexNew;
}
@ -4017,10 +4022,10 @@ void Style_ToggleUse2ndDefault(HWND hwnd)
//
void Style_SetDefaultFont(HWND hwnd)
{
int iIdx = (bUse2ndDefaultStyle) ? STY_CNT_LAST : 0;
const int iIdx = (bUse2ndDefaultStyle) ? STY_CNT_LAST : 0;
if (Style_SelectFont(hwnd,
lexDefault.Styles[STY_DEFAULT + iIdx].szValue,
COUNTOF(lexDefault.Styles[STY_DEFAULT].szValue),
COUNTOF(lexDefault.Styles[STY_DEFAULT + iIdx].szValue),
TRUE)) {
fStylesModified = TRUE;
Style_SetLexer(hwnd,pLexCurrent);
@ -4425,7 +4430,7 @@ BOOL Style_SelectFont(HWND hwnd,LPWSTR lpszStyle,int cchStyle,BOOL bDefaultStyle
StringCchCat(szNewStyle,COUNTOF(szNewStyle),tch);
}
StringCchCopyN(lpszStyle,cchStyle,szNewStyle,cchStyle);
StringCchCopyN(lpszStyle,cchStyle,szNewStyle,COUNTOF(szNewStyle));
return TRUE;
}