+ fix: "Compressed View" - minor issues

This commit is contained in:
Rainer Kottenhoff 2018-04-09 10:35:08 +02:00
parent cff9941df8
commit d1240fa3fc
3 changed files with 47 additions and 31 deletions

View File

@ -4889,7 +4889,7 @@ static RegExResult_t __fastcall _FindHasMatch(HWND hwnd, LPCEDITFINDREPLACE lpef
else // mark all matches
{
if (bMarkAll && (iPos >= 0)) {
EditClearAllMarks(hwnd, (DocPos)0, iTextLength);
EditClearAllOccurrenceMarkers(hwnd, (DocPos)0, iTextLength);
EditMarkAll(hwnd, szFind, (int)(lpefr->fuFlags), (DocPos)0, iTextLength, false, false, bMarkAll);
}
}
@ -5032,7 +5032,7 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
else {
CheckDlgButton(hwnd, IDC_ALL_OCCURRENCES, BST_UNCHECKED);
DialogEnableWindow(hwnd, IDC_TOGGLE_VISIBILITY, false);
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
}
EnableCmd(GetMenu(g_hwndMain), IDM_VIEW_MARKOCCUR_VISIBLE, bMarkOccurrencesMatchVisible);
@ -5107,13 +5107,12 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
{
sg_pefrData->szFind[0] = '\0';
EditClearAllMarks(g_hwndEdit, 0, -1);
if (bHideNonMatchedLines) {
EditApplyLexerStyle(g_hwndEdit, 0, -1);
bHideNonMatchedLines = false;
SendMessage(hwnd, WM_COMMAND, MAKELONG(IDC_TOGGLE_VISIBILITY, 1), 0);
}
if (sg_pefrData->bMarkOccurences) {
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
}
iMarkOccurrences = iSaveMarkOcc;
bMarkOccurrencesMatchVisible = bSaveOccVisible;
g_bCodeFoldingAvailable = bSaveFoldingAvailable;
@ -5316,7 +5315,7 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
sg_pefrData->bStateChanged = true;
}
DialogEnableWindow(hwnd, IDC_TOGGLE_VISIBILITY, false);
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
InvalidateRect(GetDlgItem(hwnd, IDC_FINDTEXT), NULL, true);
}
EnableCmd(GetMenu(g_hwndMain), IDM_VIEW_MARKOCCUR_ONOFF, (iMarkOccurrences > 0));
@ -5334,7 +5333,7 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
bHideNonMatchedLines = bHideNonMatchedLines ? false : true;
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
sg_pefrData->bStateChanged = true; // force
if (bHideNonMatchedLines) {
@ -5902,8 +5901,14 @@ void EditMarkAllOccurrences()
if (EditIsInTargetTransaction()) { return; } // do not block, next event occurs for sure
BeginWaitCursor(NULL);
IgnoreNotifyChangeEvent();
bool bWaitCursor = false;
if (iMarkOccurrencesCount > 2000) {
BeginWaitCursor(NULL);
bWaitCursor = true;
}
else {
IgnoreNotifyChangeEvent();
}
EditEnterTargetTransaction();
if (bMarkOccurrencesMatchVisible)
@ -5926,9 +5931,13 @@ void EditMarkAllOccurrences()
UpdateStatusbar();
}
EditLeaveTargetTransaction();
ObserveNotifyChangeEvent();
EndWaitCursor();
if (bWaitCursor) {
EndWaitCursor();
}
else {
ObserveNotifyChangeEvent();
}
}
else {
iMarkOccurrencesCount = 0;
@ -6233,10 +6242,11 @@ bool EditReplaceAllInSelection(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bShowIn
//=============================================================================
//
// EditClearAllMarks()
// EditClearAllOccurrenceMarkers()
//
void EditClearAllMarks(HWND hwnd, DocPos iRangeStart, DocPos iRangeEnd)
void EditClearAllOccurrenceMarkers(HWND hwnd, DocPos iRangeStart, DocPos iRangeEnd)
{
IgnoreNotifyChangeEvent();
if (iRangeStart < 0) {
iRangeStart = 0;
}
@ -6253,6 +6263,7 @@ void EditClearAllMarks(HWND hwnd, DocPos iRangeStart, DocPos iRangeEnd)
for (DocLn iLine = SciCall_LineFromPosition(iRangeStart); iLine <= iEndLine; ++iLine) {
SciCall_MarkerDelete(iLine, MARKER_NP3_OCCUR_LINE);
}
ObserveNotifyChangeEvent();
}

View File

@ -97,7 +97,7 @@ bool EditPrint(HWND,LPCWSTR,LPCWSTR);
void EditPrintSetup(HWND);
void EditPrintInit();
void EditMatchBrace(HWND);
void EditClearAllMarks(HWND, DocPos, DocPos);
void EditClearAllOccurrenceMarkers(HWND, DocPos, DocPos);
void EditMarkAll(HWND, char*, int, DocPos, DocPos, bool, bool, bool);
void EditUpdateUrlHotspots(HWND, DocPos, DocPos, bool);
void EditSetAccelWordNav(HWND,bool);

View File

@ -1071,7 +1071,7 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam)
// update Scintilla colors
case WM_SYSCOLORCHANGE:
UpdateLineNumberWidth();
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
MarkAllOccurrences(0);
UpdateVisibleUrlHotspot(0);
return DefWindowProc(hwnd,umsg,wParam,lParam);
@ -1797,7 +1797,7 @@ void MsgThemeChanged(HWND hwnd,WPARAM wParam,LPARAM lParam)
UpdateToolbar();
UpdateStatusbar();
UpdateLineNumberWidth();
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
MarkAllOccurrences(0);
EditUpdateUrlHotspots(g_hwndEdit, 0, SciCall_GetTextLength(), bHyperlinkHotspot);
EditFinalizeStyling(g_hwndEdit, -1);
@ -4231,46 +4231,46 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
case IDM_VIEW_ACCELWORDNAV:
bAccelWordNavigation = (bAccelWordNavigation) ? false : true; // toggle
EditSetAccelWordNav(g_hwndEdit,bAccelWordNavigation);
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
MarkAllOccurrences(iUpdateDelayMarkAllCoccurrences);
break;
case IDM_VIEW_MARKOCCUR_ONOFF:
iMarkOccurrences = (iMarkOccurrences == 0) ? max(1, IniGetInt(L"Settings", L"MarkOccurrences", 1)) : 0;
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
MarkAllOccurrences(0);
break;
case IDM_VIEW_MARKOCCUR_VISIBLE:
bMarkOccurrencesMatchVisible = (bMarkOccurrencesMatchVisible) ? false : true;
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
MarkAllOccurrences(0);
break;
case IDM_VIEW_MARKOCCUR_CASE:
bMarkOccurrencesMatchCase = (bMarkOccurrencesMatchCase) ? false : true;
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
MarkAllOccurrences(iUpdateDelayMarkAllCoccurrences);
break;
case IDM_VIEW_MARKOCCUR_WNONE:
bMarkOccurrencesMatchWords = false;
bMarkOccurrencesCurrentWord = false;
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
MarkAllOccurrences(iUpdateDelayMarkAllCoccurrences);
break;
case IDM_VIEW_MARKOCCUR_WORD:
bMarkOccurrencesMatchWords = true;
bMarkOccurrencesCurrentWord = false;
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
MarkAllOccurrences(iUpdateDelayMarkAllCoccurrences);
break;
case IDM_VIEW_MARKOCCUR_CURRENT:
bMarkOccurrencesMatchWords = false;
bMarkOccurrencesCurrentWord = true;
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
MarkAllOccurrences(iUpdateDelayMarkAllCoccurrences);
break;
@ -5460,14 +5460,19 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam)
}
if (iMarkOccurrences > 0) {
// clear marks only, if caret/selection changed
// clear marks only, if selection changed
if (scn->updated & SC_UPDATE_SELECTION) {
EditClearAllMarks(g_hwndEdit, 0, -1);
MarkAllOccurrences(iUpdateDelayMarkAllCoccurrences);
}
else {
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
if (!SciCall_IsSelectionEmpty()) {
MarkAllOccurrences(iUpdateDelayMarkAllCoccurrences);
}
}
else if (scn->updated & SC_UPDATE_CONTENT) {
MarkAllOccurrences(iUpdateDelayMarkAllCoccurrences);
}
//else {
// //MarkAllOccurrences(iUpdateDelayMarkAllCoccurrences);
//}
}
if (bHyperlinkHotspot) {
@ -5506,7 +5511,7 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam)
}
if (iMarkOccurrences > 0) {
EditClearAllMarks(g_hwndEdit, 0, -1);
EditClearAllOccurrenceMarkers(g_hwndEdit, 0, -1);
MarkAllOccurrences(iUpdateDelayMarkAllCoccurrences);
}