diff --git a/src/Notepad3.c b/src/Notepad3.c index b2589fd7b..72846aa0c 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -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); + // --------------------------------------------------------------------------