Merge pull request #3699 from RaiKoHoff/Dev_RC

Disabled menu items if settings file itself is locked...
This commit is contained in:
Rainer Kottenhoff 2021-09-30 11:00:01 +02:00 committed by GitHub
commit 6b545be034
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3612,7 +3612,6 @@ LRESULT MsgExitMenuLoop(HWND hwnd, WPARAM wParam)
//
// MsgInitMenu() - Handles WM_INITMENU
//
//
LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
@ -3625,7 +3624,6 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
//bool const dm = UseDarkMode();
bool const si = Flags.bSingleFileInstance;
bool const cf = StrIsNotEmpty(Paths.CurrentFile);
bool const sav = Globals.bCanSaveIniFile;
bool const ro = SciCall_GetReadOnly(); // scintilla mode read-only
bool const lck = (FileWatching.FileWatchingMode == FWM_EXCLUSIVELOCK); // file write lock
bool const faro = s_bFileReadOnly; // file attrib read-only
@ -3636,6 +3634,8 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
bool const mls = Sci_IsSelectionMultiLine();
//bool const lfl = Flags.bHugeFileLoadState;
//~bool const sav = Globals.bCanSaveIniFile; ~ done by UpdateSaveSettingsCmds()
DocPos const iCurPos = SciCall_GetCurrentPos();
DocLn const iCurLine = SciCall_LineFromPosition(iCurPos);
bool const bPosInSel = Sci_IsPosInSelection(iCurPos);
@ -3962,12 +3962,8 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
CheckCmd(hmenu, IDM_VIEW_SCROLLPASTEOF, Settings.ScrollPastEOF);
CheckCmd(hmenu, IDM_VIEW_REUSEWINDOW, Flags.bReuseWindow);
EnableCmd(hmenu, IDM_VIEW_REUSEWINDOW, sav);
CheckCmd(hmenu, IDM_VIEW_SINGLEFILEINSTANCE, Flags.bSingleFileInstance);
EnableCmd(hmenu, IDM_VIEW_SINGLEFILEINSTANCE, sav);
CheckCmd(hmenu, IDM_VIEW_STICKYWINPOS, Flags.bStickyWindowPosition);
EnableCmd(hmenu, IDM_VIEW_STICKYWINPOS, sav);
EnableCmd(hmenu, CMD_SAVEASDEFWINPOS, sav);
CheckCmd(hmenu, IDM_VIEW_ALWAYSONTOP, Settings.AlwaysOnTop);
CheckCmd(hmenu, IDM_VIEW_MINTOTRAY, Settings.MinimizeToTray);
@ -4001,11 +3997,8 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
//~EnableCmd(hmenu, IDM_VIEW_SAVEBEFORERUNNINGTOOLS, !faro);
CheckCmd(hmenu, IDM_VIEW_NOSAVERECENT, Settings.SaveRecentFiles);
EnableCmd(hmenu, IDM_VIEW_NOSAVERECENT, sav);
CheckCmd(hmenu, IDM_VIEW_NOPRESERVECARET, Settings.PreserveCaretPos);
EnableCmd(hmenu, IDM_VIEW_NOPRESERVECARET, Settings.SaveRecentFiles && sav);
CheckCmd(hmenu, IDM_VIEW_NOSAVEFINDREPL, Settings.SaveFindReplace);
EnableCmd(hmenu, IDM_VIEW_NOSAVEFINDREPL, sav);
CheckCmd(hmenu, IDM_VIEW_EVALTINYEXPRONSEL, Settings.EvalTinyExprOnSelection);
@ -9663,12 +9656,28 @@ void UpdateMarginWidth(const bool bForce)
void UpdateSaveSettingsCmds()
{
bool const bSoftLocked = Flags.bSettingsFileSoftLocked;
bool const bCurrFileLocked = (FileWatching.FileWatchingMode == FWM_EXCLUSIVELOCK);
bool const bHaveIniFile = StrIsNotEmpty(Paths.IniFile);
bool const bHaveFallbackIniFile = StrIsNotEmpty(Paths.IniFileDefault);
CheckCmd(Globals.hMainMenu, IDM_VIEW_SAVESETTINGS, Settings.SaveSettings && !bSoftLocked);
EnableCmd(Globals.hMainMenu, IDM_VIEW_SAVESETTINGS, Globals.bCanSaveIniFile && !bSoftLocked);
EnableCmd(Globals.hMainMenu, IDM_VIEW_SAVESETTINGSNOW, (bHaveIniFile || bHaveFallbackIniFile) && !bSoftLocked);
EnableCmd(Globals.hMainMenu, CMD_OPENINIFILE, bHaveIniFile && !bSoftLocked);
bool const bCanSav = Globals.bCanSaveIniFile = !(bSoftLocked && bCurrFileLocked) && CanAccessPath(Paths.IniFile, GENERIC_WRITE);
HMENU const hmenu = Globals.hMainMenu;
CheckCmd(hmenu, IDM_VIEW_SAVESETTINGS, Settings.SaveSettings && !bSoftLocked);
EnableCmd(hmenu, IDM_VIEW_SAVESETTINGS, bCanSav && !bSoftLocked);
EnableCmd(hmenu, IDM_VIEW_SAVESETTINGSNOW, (bHaveIniFile || bHaveFallbackIniFile) && !bSoftLocked);
EnableCmd(hmenu, CMD_OPENINIFILE, bHaveIniFile && !bSoftLocked);
EnableCmd(hmenu, IDM_VIEW_REUSEWINDOW, bCanSav);
EnableCmd(hmenu, IDM_VIEW_SINGLEFILEINSTANCE, bCanSav);
EnableCmd(hmenu, IDM_VIEW_STICKYWINPOS, bCanSav);
EnableCmd(hmenu, CMD_SAVEASDEFWINPOS, bCanSav);
EnableCmd(hmenu, IDM_VIEW_NOSAVERECENT, bCanSav);
EnableCmd(hmenu, IDM_VIEW_NOPRESERVECARET, Settings.SaveRecentFiles && bCanSav);
EnableCmd(hmenu, IDM_VIEW_NOSAVEFINDREPL, bCanSav);
DrawMenuBar(Globals.hwndMain);
}
@ -11841,6 +11850,8 @@ void InstallFileWatching(const bool bInstall) {
}
}
}
UpdateSaveSettingsCmds(); // (!) reflection
UpdateTitleBar(Globals.hwndMain);
UpdateToolbar();
}