mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
+ fix: issue on "Toggle Visibility" drawing a selection on clicking into view
This commit is contained in:
parent
9c931ea9cd
commit
09cb506937
39
src/Edit.c
39
src/Edit.c
@ -73,6 +73,7 @@ extern bool bFindReplCopySelOrClip;
|
||||
|
||||
static EDITFINDREPLACE efrSave;
|
||||
static bool bSwitchedFindReplace = false;
|
||||
static bool bHideNonMatchedLines = false;
|
||||
|
||||
extern int xFindReplaceDlg;
|
||||
extern int yFindReplaceDlg;
|
||||
@ -4715,12 +4716,24 @@ static RegExResult_t __fastcall _FindHasMatch(HWND hwnd, LPCEDITFINDREPLACE lpef
|
||||
DocPos end = iTextLength;
|
||||
const DocPos iPos = _FindInTarget(hwnd, szFind, slen, (int)(lpefr->fuFlags), &start, &end, false, FRMOD_IGNORE);
|
||||
|
||||
static DocLn lastScrollToLn = -1;
|
||||
|
||||
if (bFirstMatchOnly && !bReplaceInitialized) {
|
||||
if (iPos >= 0) {
|
||||
EditScrollTo(hwnd, SciCall_LineFromPosition(iPos), true);
|
||||
}
|
||||
else {
|
||||
EditScrollTo(hwnd, SciCall_LineFromPosition(iStart), false);
|
||||
if (!bHideNonMatchedLines) {
|
||||
if (iPos >= 0) {
|
||||
const DocLn scrollToLn = SciCall_LineFromPosition(iPos);
|
||||
if (scrollToLn != lastScrollToLn) {
|
||||
EditScrollTo(hwnd, scrollToLn, true);
|
||||
lastScrollToLn = scrollToLn;
|
||||
}
|
||||
}
|
||||
else {
|
||||
const DocLn scrollToLn = SciCall_LineFromPosition(iStart);
|
||||
if (scrollToLn != lastScrollToLn) {
|
||||
EditScrollTo(hwnd, scrollToLn, false);
|
||||
lastScrollToLn = scrollToLn;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else // mark all matches
|
||||
@ -4765,7 +4778,6 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
|
||||
static RegExResult_t regexMatch = INVALID;
|
||||
|
||||
static bool bFlagsChanged = true;
|
||||
static bool bHideNonMatchedLines = false;
|
||||
|
||||
static COLORREF rgbRed = RGB(255, 170, 170);
|
||||
static COLORREF rgbGreen = RGB(170, 255, 170);
|
||||
@ -5163,10 +5175,14 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
|
||||
EnableCmd(GetMenu(g_hwndMain), IDM_VIEW_HYPERLINKHOTSPOTS, bHyperlinkHotspot);
|
||||
bFlagsChanged = true;
|
||||
_SetTimerMarkAll(hwnd, 0);
|
||||
if (bHideNonMatchedLines)
|
||||
if (bHideNonMatchedLines) {
|
||||
EditScrollTo(g_hwndEdit, 0, false);
|
||||
else
|
||||
SendMessage(g_hwndEdit, SCI_SETREADONLY, true, 0);
|
||||
}
|
||||
else {
|
||||
EditScrollTo(g_hwndEdit, Sci_GetCurrentLine(), true);
|
||||
SendMessage(g_hwndEdit, SCI_SETREADONLY, false, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@ -6408,12 +6424,10 @@ void EditUpdateUrlHotspots(HWND hwnd, DocPos startPos, DocPos endPos, bool bActi
|
||||
//
|
||||
void EditHideNotMarkedLineRange(HWND hwnd, DocPos iStartPos, DocPos iEndPos, bool bHide)
|
||||
{
|
||||
static bool bLastState = true;
|
||||
//UNUSED(hwnd);
|
||||
UNUSED(hwnd);
|
||||
|
||||
if (!bHide) {
|
||||
//SendMessage(hwnd, SCI_FOLDALL, (WPARAM)SC_FOLDACTION_EXPAND, 0);
|
||||
bLastState = bHide;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -6442,6 +6456,7 @@ void EditHideNotMarkedLineRange(HWND hwnd, DocPos iStartPos, DocPos iEndPos, boo
|
||||
|
||||
|
||||
const int baseLevel = SC_FOLDLEVELBASE;
|
||||
const int headerLevel = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;
|
||||
const int hiddenLevel = (SC_FOLDLEVELBASE + 1) | SC_FOLDLEVELWHITEFLAG;
|
||||
|
||||
bool bHdrFlag = false;
|
||||
@ -6456,7 +6471,7 @@ void EditHideNotMarkedLineRange(HWND hwnd, DocPos iStartPos, DocPos iEndPos, boo
|
||||
}
|
||||
if (bIsHidden) {
|
||||
if (!bHdrFlag) {
|
||||
SendMessage(hwnd, SCI_SETFOLDLEVEL, (WPARAM)iLine, (LPARAM)(baseLevel | SC_FOLDLEVELHEADERFLAG));
|
||||
SendMessage(hwnd, SCI_SETFOLDLEVEL, (WPARAM)iLine, (LPARAM)headerLevel);
|
||||
bHdrFlag = true;
|
||||
}
|
||||
else
|
||||
|
||||
@ -2594,11 +2594,6 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
|
||||
case IDM_FILE_READONLY:
|
||||
//bReadOnly = (bReadOnly) ? false : true;
|
||||
//SendMessage(g_hwndEdit,SCI_SETREADONLY,bReadOnly,0);
|
||||
//UpdateToolbar();
|
||||
//UpdateStatusbar();
|
||||
|
||||
if (StringCchLenW(g_wchCurFile,COUNTOF(g_wchCurFile)))
|
||||
{
|
||||
DWORD dwFileAttributes = GetFileAttributes(g_wchCurFile);
|
||||
|
||||
@ -699,7 +699,7 @@ BEGIN
|
||||
CONTROL "<a>(?)</a>",IDC_BACKSLASHHELP,"SysLink",0x0,106,73,14,10
|
||||
CONTROL "<a>(?)</a>",IDC_WILDCARDHELP,"SysLink",0x0,191,85,14,10
|
||||
CONTROL "",IDS_FR_STATUS_TEXT,"Static",SS_LEFTNOWORDWRAP,7,117,259,9,WS_EX_STATICEDGE
|
||||
PUSHBUTTON "Toggle Visibility",IDC_TOGGLE_VISIBILITY,211,65,55,14
|
||||
PUSHBUTTON "Toggle &Visibility",IDC_TOGGLE_VISIBILITY,211,65,55,14
|
||||
END
|
||||
|
||||
IDD_REPLACE DIALOGEX 0, 0, 273, 156
|
||||
@ -734,7 +734,7 @@ BEGIN
|
||||
CONTROL "<a>(?)</a>",IDC_REGEXPHELP,"SysLink",0x0,107,114,14,10
|
||||
CONTROL "<a>(?)</a>",IDC_WILDCARDHELP,"SysLink",0x0,191,114,14,10
|
||||
CONTROL "",IDS_FR_STATUS_TEXT,"Static",SS_LEFTNOWORDWRAP,7,144,259,9,WS_EX_STATICEDGE
|
||||
PUSHBUTTON "Toggle Visibility",IDC_TOGGLE_VISIBILITY,211,94,55,14
|
||||
PUSHBUTTON "Toggle &Visibility",IDC_TOGGLE_VISIBILITY,211,94,55,14
|
||||
END
|
||||
|
||||
IDD_RUN DIALOGEX 0, 0, 229, 96
|
||||
|
||||
23
src/Styles.c
23
src/Styles.c
@ -125,7 +125,8 @@ enum LexDefaultStyles {
|
||||
STY_BOOK_MARK = 12,
|
||||
STY_MARK_OCC = 13,
|
||||
STY_URL_HOTSPOT = 14,
|
||||
STY_INVISIBLE = 15
|
||||
STY_INVISIBLE = 15,
|
||||
STY_READONLY = 16
|
||||
};
|
||||
|
||||
|
||||
@ -3933,6 +3934,26 @@ void Style_SetInvisible(HWND hwnd, bool bInvisible)
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// Style_GetReadonlyStyleID()
|
||||
//
|
||||
int Style_GetReadonlyStyleID()
|
||||
{
|
||||
return (STYLE_LASTPREDEFINED + STY_READONLY);
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// Style_SetInvisible()
|
||||
//
|
||||
void Style_SetReadonly(HWND hwnd, bool bReadonly)
|
||||
{
|
||||
SendMessage(hwnd, SCI_STYLESETCHANGEABLE, Style_GetReadonlyStyleID(), (LPARAM)!bReadonly);
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// Style_SetLongLineColors()
|
||||
|
||||
@ -72,6 +72,7 @@ bool Style_Export(HWND);
|
||||
void Style_SetLexer(HWND,PEDITLEXER);
|
||||
void Style_SetUrlHotSpot(HWND, bool);
|
||||
void Style_SetInvisible(HWND, bool);
|
||||
void Style_SetReadonly(HWND, bool);
|
||||
void Style_SetLongLineColors(HWND);
|
||||
void Style_SetCurrentLineBackground(HWND, bool);
|
||||
void Style_SetFolding(HWND, bool);
|
||||
@ -118,6 +119,7 @@ INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND,UINT,WPARAM,LPARAM);
|
||||
void Style_SelectLexerDlg(HWND);
|
||||
int Style_GetHotspotStyleID();
|
||||
int Style_GetInvisibleStyleID();
|
||||
int Style_GetReadonlyStyleID();
|
||||
bool Style_StrGetWeightValue(LPCWSTR,int*);
|
||||
void Style_AppendWeightStr(LPWSTR, int, int);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user