+ fix: Hyperlink feature related delay of font changing

+ add: mor triggers for Hyperlink style updated
This commit is contained in:
Rainer Kottenhoff 2017-12-10 19:00:17 +01:00
parent ba3ac599e5
commit c6ef530efc
3 changed files with 23 additions and 25 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

@ -2030,7 +2030,6 @@ LRESULT MsgCopyData(HWND hwnd, WPARAM wParam, LPARAM lParam)
UpdateToolbar();
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
}
@ -2533,7 +2532,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
//SendMessage(hwndEdit,SCI_SETREADONLY,bReadOnly,0);
//UpdateToolbar();
//UpdateStatusbar();
//EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
if (StringCchLenW(szCurFile,COUNTOF(szCurFile)))
{
@ -2889,7 +2887,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
UpdateToolbar();
UpdateStatusbar();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
}
}
break;
@ -2933,7 +2930,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
EditFixPositions(hwndEdit);
UpdateToolbar();
UpdateStatusbar();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
}
break;
@ -3056,7 +3052,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
LocalFree(pClip);
UpdateToolbar();
UpdateStatusbar();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
}
break;
@ -4023,7 +4018,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_SelectLexerDlg(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4031,7 +4025,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_ToggleUse2ndDefault(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4039,7 +4032,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_ConfigDlg(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4047,7 +4039,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_SetDefaultFont(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4114,7 +4105,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
else
SendMessage(hwndEdit,SCI_SETEDGEMODE,EDGE_NONE,0);
UpdateStatusbar();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4126,7 +4116,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
iLongLinesLimit = max(min(iLongLinesLimit,4096),0);
SendMessage(hwndEdit,SCI_SETEDGECOLUMN,iLongLinesLimit,0);
UpdateStatusbar();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
iLongLinesLimitG = iLongLinesLimit;
}
break;
@ -4779,7 +4768,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_SetDefaultLexer(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4787,7 +4775,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_SetHTMLLexer(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -4795,7 +4782,6 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
Style_SetXMLLexer(hwndEdit);
UpdateStatusbar();
UpdateLineNumberWidth();
EditUpdateUrlHotspots(hwndEdit, 0, SciCall_GetTextLength());
break;
@ -5681,8 +5667,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;
}