mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-11 21:03:05 +08:00
+ fix: Hyperlink feature related delay of font changing
+ add: mor triggers for Hyperlink style updated
This commit is contained in:
parent
ba3ac599e5
commit
c6ef530efc
@ -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+&@#/%=~_|$])";
|
||||
|
||||
@ -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;
|
||||
|
||||
27
src/Styles.c
27
src/Styles.c
@ -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;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user