+fix: menu View: correct positioning of active marks

This commit is contained in:
METANEOCORTEX\Kotti 2023-06-29 00:24:51 +02:00
parent 3a11c67242
commit 23df26b740

View File

@ -4065,6 +4065,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
bool const mrs = Sci_IsMultiOrRectangleSelection();
bool const te = Sci_IsDocEmpty();
bool const mls = Sci_IsSelectionMultiLine();
bool const moe = IsMarkOccurrencesEnabled();
//bool const lfl = Flags.bHugeFileLoadState;
//~bool const sav = Globals.bCanSaveIniFile; ~ done by UpdateSaveSettingsCmds()
@ -4282,19 +4283,6 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
EnableCmd(hmenu, IDM_VIEW_FONT, !IsWindow(Globals.hwndDlgCustomizeSchemes));
EnableCmd(hmenu, IDM_VIEW_CURRENTSCHEME, !IsWindow(Globals.hwndDlgCustomizeSchemes));
EnableCmd(hmenu, IDM_VIEW_FOLDING, FocusedView.CodeFoldingAvailable && !FocusedView.HideNonMatchedLines);
bool const fd = (FocusedView.CodeFoldingAvailable && FocusedView.ShowCodeFolding);
CheckCmd(hmenu, IDM_VIEW_FOLDING, fd);
EnableCmd(hmenu, IDM_VIEW_TOGGLEFOLDS, !te && fd);
EnableCmd(hmenu, CMD_FOLDJUMPDOWN, !te && fd);
EnableCmd(hmenu, CMD_FOLDJUMPUP, !te && fd);
EnableCmd(hmenu, CMD_FOLDCOLLAPSE, !te && fd);
EnableCmd(hmenu, CMD_FOLDEXPAND, !te && fd);
bool const bF = (SC_FOLDLEVELBASE < (SciCall_GetFoldLevel(iCurLine) & SC_FOLDLEVELNUMBERMASK));
bool const bH = (SciCall_GetFoldLevel(iCurLine) & SC_FOLDLEVELHEADERFLAG);
EnableCmd(hmenu, IDM_VIEW_TOGGLE_CURRENT_FOLD, !te && fd && (bF || bH));
CheckCmdPos(GetSubMenu(GetMenu(Globals.hwndMain), 2), 20, fd);
CheckCmd(hmenu, IDM_VIEW_USE2NDDEFAULT, Style_GetUse2ndDefault());
CheckCmd(hmenu, IDM_VIEW_READONLY, ro);
@ -4306,8 +4294,9 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
CheckCmd(hmenu, IDM_VIEW_CHGHIST_TOGGLE_MARGIN, SciCall_GetMarginWidthN(MARGIN_SCI_CHGHIST) > 0);
CheckCmd(hmenu, IDM_VIEW_CHASING_DOCTAIL, FileWatching.MonitoringLog);
CheckCmd(hmenu, IDM_VIEW_MARKOCCUR_ONOFF, IsMarkOccurrencesEnabled());
CheckCmd(hmenu, IDM_VIEW_MARKOCCUR_ONOFF, moe);
CheckCmd(hmenu, IDM_VIEW_MARKOCCUR_BOOKMARKS, Settings.MarkOccurrencesBookmark);
EnableCmd(hmenu, IDM_VIEW_MARKOCCUR_BOOKMARKS, moe);
CheckCmd(hmenu, IDM_VIEW_MARKOCCUR_VISIBLE, Settings.MarkOccurrencesMatchVisible);
CheckCmd(hmenu, IDM_VIEW_MARKOCCUR_CASE, Settings.MarkOccurrencesMatchCase);
@ -4331,24 +4320,26 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
CheckCmd(hmenu, IDM_VIEW_HYPERLINKHOTSPOTS, Settings.HyperlinkHotspot);
int const _SUB_MNU_2 = 8; // menu:View -> base for parent of sub-menus (adj. offset accordingly)
int const chState = SciCall_GetChangeHistory();
assert(chState == Settings.ChangeHistoryMode);
i = IDM_VIEW_CHGHIST_NONE;
i += (chState & SC_CHANGE_HISTORY_MARKERS) ? 1 : 0;
i += (chState & SC_CHANGE_HISTORY_INDICATORS) ? 2 : 0;
CheckMenuRadioItem(hmenu, IDM_VIEW_CHGHIST_NONE, IDM_VIEW_CHGHIST_ALL, i, MF_BYCOMMAND);
CheckCmdPos(GetSubMenu(GetMenu(Globals.hwndMain), 2), 8, (i != IDM_VIEW_CHGHIST_NONE));
CheckCmdPos(GetSubMenu(hmenu, 2), _SUB_MNU_2 + 0, (i != IDM_VIEW_CHGHIST_NONE));
i = IDM_VIEW_COLORDEFHOTSPOTS + Settings.ColorDefHotspot;
CheckMenuRadioItem(hmenu, IDM_VIEW_COLORDEFHOTSPOTS, IDM_VIEW_COLOR_BGRA, i, MF_BYCOMMAND);
CheckCmdPos(GetSubMenu(GetMenu(Globals.hwndMain), 2), 11, IsColorDefHotspotEnabled());
CheckCmdPos(GetSubMenu(hmenu, 2), _SUB_MNU_2 + 4, IsColorDefHotspotEnabled());
CheckCmd(hmenu, IDM_VIEW_UNICODE_POINTS, Settings.HighlightUnicodePoints);
CheckCmd(hmenu, IDM_VIEW_MATCHBRACES, Settings.MatchBraces);
i = IDM_VIEW_HILITCURLN_NONE + Settings.HighlightCurrentLine;
CheckMenuRadioItem(hmenu, IDM_VIEW_HILITCURLN_NONE, IDM_VIEW_HILITCURLN_FRAME, i, MF_BYCOMMAND);
CheckCmdPos(GetSubMenu(GetMenu(Globals.hwndMain), 2), 14, (i != IDM_VIEW_HILITCURLN_NONE));
CheckCmdPos(GetSubMenu(hmenu, 2), _SUB_MNU_2 + 7, (i != IDM_VIEW_HILITCURLN_NONE));
#ifdef D_NP3_WIN10_DARK_MODE
EnableCmd(hmenu, IDM_VIEW_WIN_DARK_MODE, IsDarkModeSupported());
@ -4360,7 +4351,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
// --------------------------------------------------------------------------
int const mnuMain = 2;
int const mnuSubOcc = 15;
int const mnuSubOcc = _SUB_MNU_2 + 8;
int const mnuSubSubWord = 6;
if (Settings.MarkOccurrencesMatchWholeWords) {
@ -4371,7 +4362,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
i = IDM_VIEW_MARKOCCUR_WNONE;
}
CheckMenuRadioItem(hmenu, IDM_VIEW_MARKOCCUR_WNONE, IDM_VIEW_MARKOCCUR_CURRENT, i, MF_BYCOMMAND);
CheckCmdPos(GetSubMenu(GetSubMenu(GetMenu(Globals.hwndMain), mnuMain), mnuSubOcc), mnuSubSubWord, (i != IDM_VIEW_MARKOCCUR_WNONE));
CheckCmdPos(GetSubMenu(GetSubMenu(hmenu, mnuMain), mnuSubOcc), mnuSubSubWord, (i != IDM_VIEW_MARKOCCUR_WNONE));
i = IsMarkOccurrencesEnabled();
EnableCmd(hmenu, IDM_VIEW_MARKOCCUR_VISIBLE, i);
@ -4379,8 +4370,24 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
EnableCmd(hmenu, IDM_VIEW_MARKOCCUR_WNONE, i);
EnableCmd(hmenu, IDM_VIEW_MARKOCCUR_WORD, i);
EnableCmd(hmenu, IDM_VIEW_MARKOCCUR_CURRENT, i);
EnableCmdPos(GetSubMenu(GetSubMenu(GetMenu(Globals.hwndMain), mnuMain), mnuSubOcc), mnuSubSubWord, i);
CheckCmdPos(GetSubMenu(GetMenu(Globals.hwndMain), mnuMain), mnuSubOcc, i);
EnableCmdPos(GetSubMenu(GetSubMenu(hmenu, mnuMain), mnuSubOcc), mnuSubSubWord, i);
CheckCmdPos(GetSubMenu(hmenu, mnuMain), mnuSubOcc, i);
// --------------------------------------------------------------------------
bool const fd = (FocusedView.CodeFoldingAvailable && FocusedView.ShowCodeFolding);
EnableCmd(hmenu, IDM_VIEW_FOLDING, FocusedView.CodeFoldingAvailable && !FocusedView.HideNonMatchedLines);
CheckCmd(hmenu, IDM_VIEW_FOLDING, fd);
EnableCmd(hmenu, IDM_VIEW_TOGGLEFOLDS, !te && fd);
EnableCmd(hmenu, CMD_FOLDJUMPDOWN, !te && fd);
EnableCmd(hmenu, CMD_FOLDJUMPUP, !te && fd);
EnableCmd(hmenu, CMD_FOLDCOLLAPSE, !te && fd);
EnableCmd(hmenu, CMD_FOLDEXPAND, !te && fd);
bool const bF = (SC_FOLDLEVELBASE < (SciCall_GetFoldLevel(iCurLine) & SC_FOLDLEVELNUMBERMASK));
bool const bH = (SciCall_GetFoldLevel(iCurLine) & SC_FOLDLEVELHEADERFLAG);
EnableCmd(hmenu, IDM_VIEW_TOGGLE_CURRENT_FOLD, !te && fd && (bF || bH));
CheckCmdPos(GetSubMenu(hmenu, 2), _SUB_MNU_2 + 14, fd);
// --------------------------------------------------------------------------