+ fix: issue on "Toggle Visibility" drawing a selection on clicking into view

This commit is contained in:
Rainer Kottenhoff 2018-04-04 11:02:53 +02:00
parent 9c931ea9cd
commit 09cb506937
5 changed files with 53 additions and 20 deletions

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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()

View File

@ -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);