diff --git a/src/Helpers.h b/src/Helpers.h index 6aef74a49..c870d48b5 100644 --- a/src/Helpers.h +++ b/src/Helpers.h @@ -106,9 +106,10 @@ BOOL IsCmdEnabled(HWND, UINT); #define EnableSettingsCmds(hwnd) {\ HMENU _hmenu = GetSystemMenu((hwnd), FALSE); \ BOOL hasIniFile = (lstrlen(szIniFile) > 0 || lstrlen(szIniFile2) > 0); \ - CheckCmd(_hmenu, IDM_VIEW_SAVESETTINGS, bSaveSettings); \ - EnableCmd(_hmenu, IDM_VIEW_SAVESETTINGS, hasIniFile && (bSaveSettings == bSaveSettingsSafe)); \ - EnableCmd(_hmenu, IDM_VIEW_SAVESETTINGSNOW, hasIniFile && (bSaveSettings == bSaveSettingsSafe)); } + CheckCmd(_hmenu, IDM_VIEW_SAVESETTINGS, bSaveSettings && bEnableSaveSettings); \ + EnableCmd(_hmenu, IDM_VIEW_SAVESETTINGS, hasIniFile && bEnableSaveSettings); \ + EnableCmd(_hmenu, IDM_VIEW_SAVESETTINGSNOW, hasIniFile && bEnableSaveSettings); \ +} #define GetString(id,pb,cb) LoadString(g_hInstance,id,pb,cb) diff --git a/src/Notepad3.c b/src/Notepad3.c index 98ccb1c25..b607243d4 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -96,7 +96,7 @@ TBBUTTON tbbMainWnd[] = { {0,IDT_FILE_NEW,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0}, WCHAR szIniFile[MAX_PATH] = { L'\0' }; WCHAR szIniFile2[MAX_PATH] = { L'\0' }; BOOL bSaveSettings; -BOOL bSaveSettingsSafe; +BOOL bEnableSaveSettings; BOOL bSaveRecentFiles; BOOL bSaveFindReplace; WCHAR tchLastSaveCopyDir[MAX_PATH] = L""; @@ -2362,14 +2362,16 @@ void MsgInitMenu(HWND hwnd,WPARAM wParam,LPARAM lParam) i = lstrlen(szIniFile); CheckCmd(hmenu,IDM_VIEW_SAVESETTINGS,bSaveSettings && i); - EnableCmd(hmenu, IDM_VIEW_SAVESETTINGS, i); + EnableCmd(hmenu,IDM_VIEW_REUSEWINDOW,i); EnableCmd(hmenu,IDM_VIEW_STICKYWINPOS,i); EnableCmd(hmenu,IDM_VIEW_SINGLEFILEINSTANCE,i); EnableCmd(hmenu,IDM_VIEW_NOSAVERECENT,i); EnableCmd(hmenu,IDM_VIEW_NOSAVEFINDREPL,i); + EnableCmd(hmenu,IDM_VIEW_SAVESETTINGS,bEnableSaveSettings && i); + i = (lstrlen(szIniFile) > 0 || lstrlen(szIniFile2) > 0); - EnableCmd(hmenu,IDM_VIEW_SAVESETTINGSNOW, (bSaveSettings == bSaveSettingsSafe) && i); + EnableCmd(hmenu,IDM_VIEW_SAVESETTINGSNOW,bEnableSaveSettings && i); UNUSED(lParam); } @@ -3096,6 +3098,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) if (flagPasteBoard) bLastCopyFromMe = TRUE; SendMessage(hwndEdit,SCI_LINECUT,0,0); + UpdateToolbar(); break; @@ -4408,13 +4411,14 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case IDM_VIEW_SAVESETTINGS: - bSaveSettings = (bSaveSettings) ? FALSE : TRUE; - bSaveSettingsSafe = bSaveSettings; + if (IsCmdEnabled(hwnd, IDM_VIEW_SAVESETTINGS)) + bSaveSettings = (bSaveSettings) ? FALSE : TRUE; break; case IDM_VIEW_SAVESETTINGSNOW: - { + if (IsCmdEnabled(hwnd, IDM_VIEW_SAVESETTINGSNOW)) { + BOOL bCreateFailure = FALSE; if (lstrlen(szIniFile) == 0) { @@ -5057,7 +5061,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) if (IsCmdEnabled(hwnd,IDM_EDIT_COPY)) SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_EDIT_COPY,1),0); else - SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_EDIT_COPYALL,1),0); + SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_EDIT_COPYALL,1),0); // different to Keyboard-Shortcut //SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_EDIT_COPYLINE,1),0); break; @@ -5612,17 +5616,14 @@ void LoadSettings() LoadIniSection(L"Settings",pIniSection,cchIniSection); - bSaveSettings = - IniSectionGetInt(pIniSection,L"SaveSettings",1); + bEnableSaveSettings = TRUE; + bSaveSettings = IniSectionGetInt(pIniSection,L"SaveSettings",1); if (bSaveSettings) bSaveSettings = 1; - bSaveSettingsSafe = bSaveSettings; - bSaveRecentFiles = - IniSectionGetInt(pIniSection,L"SaveRecentFiles",0); + bSaveRecentFiles = IniSectionGetInt(pIniSection,L"SaveRecentFiles",0); if (bSaveRecentFiles) bSaveRecentFiles = 1; - bSaveFindReplace = - IniSectionGetInt(pIniSection,L"SaveFindReplace",0); + bSaveFindReplace = IniSectionGetInt(pIniSection,L"SaveFindReplace",0); if (bSaveFindReplace) bSaveFindReplace = 1; efrData.bFindClose = IniSectionGetInt(pIniSection,L"CloseFind",0); @@ -5966,6 +5967,9 @@ void SaveSettings(BOOL bSaveSettingsNow) { if (lstrlen(szIniFile) == 0) return; + if (!bEnableSaveSettings) + return; + CreateIniFile(); if (!bSaveSettings && !bSaveSettingsNow) { @@ -6677,6 +6681,7 @@ int FindIniFile() { } } + // normalize path PathCanonicalizeEx(szIniFile); GetLongPathNameEx(szIniFile, COUNTOF(szIniFile)); @@ -7029,7 +7034,7 @@ BOOL FileLoad(BOOL bDontSave,BOOL bNew,BOOL bReload,BOOL bNoEncDetect,LPCWSTR lp if (bResetFileWatching) iFileWatchingMode = 0; InstallFileWatching(NULL); - bSaveSettings = bSaveSettingsSafe; + bEnableSaveSettings = TRUE; EnableSettingsCmds(hwndMain); return TRUE; } @@ -7103,16 +7108,6 @@ BOOL FileLoad(BOOL bDontSave,BOOL bNew,BOOL bReload,BOOL bNoEncDetect,LPCWSTR lp if (fSuccess) { lstrcpy(szCurFile,szFileName); - // consistent settings file handling (if loaded in editor) - if (lstrcmp(szCurFile, szIniFile) == 0) { - bSaveSettingsSafe = bSaveSettings; - bSaveSettings = FALSE; - EnableSettingsCmds(hwndMain); - } - else if (!bReload && (bSaveSettings != bSaveSettingsSafe)) { - bSaveSettings = bSaveSettingsSafe; - EnableSettingsCmds(hwndMain); - } SetDlgItemText(hwndMain,IDC_FILENAME,szCurFile); SetDlgItemInt(hwndMain,IDC_REUSELOCK,GetTickCount(),FALSE); if (!fKeepTitleExcerpt) @@ -7153,6 +7148,10 @@ BOOL FileLoad(BOOL bDontSave,BOOL bNew,BOOL bReload,BOOL bNoEncDetect,LPCWSTR lp } } + // consistent settings file handling (if loaded in editor) + bEnableSaveSettings = (lstrcmp(szCurFile, szIniFile) == 0) ? FALSE : TRUE; + EnableSettingsCmds(hwndMain); + // Show warning: Unicode file loaded as ANSI if (bUnicodeErr) MsgBox(MBWARN,IDS_ERR_UNICODE); diff --git a/src/Notepad3.rc b/src/Notepad3.rc index 401d730f8..14615b7b9 100644 --- a/src/Notepad3.rc +++ b/src/Notepad3.rc @@ -108,8 +108,8 @@ BEGIN MENUITEM "Recode to &ANSI\tCtrl-Shift+A", CMD_RECODEANSI MENUITEM "Recode to &Default\tCtrl-Alt-F", CMD_RECODEDEFAULT MENUITEM "Recode to &OEM\tCtrl+Shift+O", CMD_RECODEOEM + MENUITEM "ASCII as UFT-&8\tCtrl+Shift+F8", CMD_RELOADASCIIASUTF8 MENUITEM "Recode &No FileVars\tAlt+F8", CMD_RELOADNOFILEVARS - MENUITEM "ASCII as UFT-&8\tShift+F8", CMD_RELOADASCIIASUTF8 MENUITEM "&Recode...\tF8", IDM_ENCODING_RECODE MENUITEM SEPARATOR MENUITEM "Set &Default...", IDM_ENCODING_SETDEFAULT @@ -155,24 +155,29 @@ BEGIN MENUITEM "Clear Clipboar&d", IDM_EDIT_CLEARCLIPBOARD MENUITEM "&Select All\tCtrl+A", IDM_EDIT_SELECTALL MENUITEM SEPARATOR - MENUITEM "Delete Line Left\tCtrl+Shift+Back", IDM_EDIT_DELETELINELEFT - MENUITEM "Delete Line Right\tCtrl+Shift+Del", IDM_EDIT_DELETELINERIGHT - MENUITEM "Delete Word Left\tCtrl+Back", CMD_CTRLBACK - MENUITEM "Delete Word Right\tCtrl+Del", CMD_CTRLDEL - MENUITEM SEPARATOR + POPUP "&Words" + BEGIN + MENUITEM "Cursor Word Left\tCtrl+Left", CMD_CTRLBACK + MENUITEM "Cursor Word Right\tCtrl+Right", CMD_CTRLBACK + MENUITEM "Delete Word Left\tCtrl+Back", CMD_CTRLBACK + MENUITEM "Delete Word Right\tCtrl+Del", CMD_CTRLDEL + END POPUP "L&ines" BEGIN MENUITEM "Move &Up\tCtrl+Shift+Up", IDM_EDIT_MOVELINEUP MENUITEM "&Move Down\tCtrl+Shift+Down", IDM_EDIT_MOVELINEDOWN MENUITEM SEPARATOR - MENUITEM "&Duplicate Line\tCtrl+D", IDM_EDIT_DUPLICATELINE - MENUITEM "&Cut Line\tCtrl+Shift+X", IDM_EDIT_CUTLINE - MENUITEM "C&opy Line\tCtrl+Shift+C", IDM_EDIT_COPYLINE - MENUITEM "D&elete Line\tCtrl+Shift+D", IDM_EDIT_DELETELINE + MENUITEM "&Cut Line\tCtrl+X,Ctrl+Shift+X", IDM_EDIT_CUTLINE + MENUITEM "C&opy Line\tCtrl+C,Ctrl+Shift+C", IDM_EDIT_COPYLINE + MENUITEM "D&elete Line\tCtrl+Shift+D", IDM_EDIT_DELETELINE + MENUITEM "&Duplicate Line\tCtrl+D", IDM_EDIT_DUPLICATELINE MENUITEM SEPARATOR - MENUITEM "Column &Wrap...\tCtrl+Shift+W", IDM_EDIT_COLUMNWRAP - MENUITEM "&Split Lines\tCtrl+I", IDM_EDIT_SPLITLINES - MENUITEM "&Join Lines\tCtrl+J", IDM_EDIT_JOINLINES + MENUITEM "Delete Line Left\tCtrl+Shift+Back", IDM_EDIT_DELETELINELEFT + MENUITEM "Delete Line Right\tCtrl+Shift+Del", IDM_EDIT_DELETELINERIGHT + MENUITEM SEPARATOR + MENUITEM "Column &Wrap...\tCtrl+Shift+W", IDM_EDIT_COLUMNWRAP + MENUITEM "&Split Lines\tCtrl+I", IDM_EDIT_SPLITLINES + MENUITEM "&Join Lines\tCtrl+J", IDM_EDIT_JOINLINES MENUITEM "Join &Paragraphs\tCtrl+Shift+J", IDM_EDIT_JOINLINESEX END POPUP "&Block" @@ -180,6 +185,19 @@ BEGIN MENUITEM "&Indent\tTab", IDM_EDIT_INDENT MENUITEM "&Unindent\tShift+Tab", IDM_EDIT_UNINDENT MENUITEM SEPARATOR + POPUP "&Enclose Selection" + BEGIN + MENUITEM "&Single Quotes\tCtrl+1", CMD_STRINGIFY + MENUITEM "&Double Quotes\tCtrl+2", CMD_STRINGIFY2 + MENUITEM SEPARATOR + MENUITEM "( )\tCtrl+3", CMD_EMBRACE + MENUITEM "[ ]\tCtrl+4", CMD_EMBRACE2 + MENUITEM "{ }\tCtrl+5", CMD_EMBRACE3 + MENUITEM SEPARATOR + MENUITEM "&Backticks\tCtrl+6", CMD_EMBRACE4 + MENUITEM SEPARATOR + MENUITEM "&With...\tAlt+Q", IDM_EDIT_ENCLOSESELECTION + END MENUITEM "&Duplicate Selection\tAlt+D", IDM_EDIT_SELECTIONDUPLICATE MENUITEM SEPARATOR MENUITEM "&Pad With Spaces\tAlt+B", IDM_EDIT_PADWITHSPACES @@ -194,18 +212,6 @@ BEGIN MENUITEM "Alig&n Lines...\tAlt+J", IDM_EDIT_ALIGN MENUITEM "S&ort Lines...\tAlt+O", IDM_EDIT_SORTLINES END - POPUP "&Enclose Selection" - BEGIN - MENUITEM "( )\tCtrl+3", CMD_EMBRACE - MENUITEM "{ }\tCtrl+4", CMD_EMBRACE2 - MENUITEM "[ ]\tCtrl+5", CMD_EMBRACE3 - MENUITEM SEPARATOR - MENUITEM "&Single Quotes\tCtrl+1", CMD_STRINGIFY - MENUITEM "&Double Quotes\tCtrl+2", CMD_STRINGIFY2 - MENUITEM "&Backticks\tCtrl+6", CMD_EMBRACE4 - MENUITEM SEPARATOR - MENUITEM "&With...\tAlt+Q", IDM_EDIT_ENCLOSESELECTION - END POPUP "C&onvert" BEGIN MENUITEM "&Uppercase\tCtrl+Shift+U", IDM_EDIT_CONVERTUPPERCASE @@ -484,6 +490,19 @@ BEGIN "U", IDM_EDIT_CONVERTUPPERCASE, VIRTKEY, SHIFT, CONTROL, NOINVERT "V", IDM_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT "V", IDM_VIEW_MATCHBRACES, VIRTKEY, SHIFT, CONTROL, NOINVERT + "W", IDM_VIEW_WORDWRAP, VIRTKEY, CONTROL, NOINVERT + "W", IDM_EDIT_TRIMLINES, VIRTKEY, ALT, NOINVERT + "W", IDM_EDIT_COLUMNWRAP, VIRTKEY, SHIFT, CONTROL, NOINVERT + "X", IDM_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT + "X", IDM_EDIT_INSERT_TAG, VIRTKEY, ALT, NOINVERT + "X", IDM_EDIT_CHAR2HEX, VIRTKEY, CONTROL, ALT, NOINVERT + "X", IDM_EDIT_CUTLINE, VIRTKEY, SHIFT, CONTROL, NOINVERT + "Y", IDM_EDIT_REDO, VIRTKEY, CONTROL, NOINVERT + "Y", IDM_EDIT_MERGEBLANKLINES, VIRTKEY, ALT, NOINVERT + "Y", IDM_EDIT_UNDO, VIRTKEY, SHIFT, CONTROL, NOINVERT + "Z", IDM_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT + "Z", IDM_EDIT_STRIP1STCHAR, VIRTKEY, ALT, NOINVERT + "Z", IDM_EDIT_REDO, VIRTKEY, SHIFT, CONTROL, NOINVERT VK_ADD, IDM_VIEW_ZOOMIN, VIRTKEY, CONTROL, NOINVERT VK_ADD, CMD_INCLINELIMIT, VIRTKEY, ALT, NOINVERT VK_ADD, CMD_INCREASENUM, VIRTKEY, CONTROL, ALT, NOINVERT @@ -532,6 +551,7 @@ BEGIN VK_F8, IDM_EDIT_INSERT_ENCODING, VIRTKEY, CONTROL, NOINVERT VK_F8, CMD_RELOADNOFILEVARS, VIRTKEY, ALT, NOINVERT VK_F8, IDM_ENCODING_UTF8, VIRTKEY, SHIFT, NOINVERT + VK_F8, CMD_RELOADASCIIASUTF8, VIRTKEY, SHIFT, CONTROL, NOINVERT VK_F9, IDM_ENCODING_SELECT, VIRTKEY, NOINVERT VK_F9, IDM_EDIT_INSERT_FILENAME, VIRTKEY, CONTROL, NOINVERT VK_F9, IDM_FILE_MANAGEFAV, VIRTKEY, ALT, NOINVERT @@ -557,19 +577,6 @@ BEGIN VK_SUBTRACT, CMD_DECREASENUM, VIRTKEY, CONTROL, ALT, NOINVERT VK_TAB, CMD_CTRLTAB, VIRTKEY, CONTROL, NOINVERT VK_UP, IDM_EDIT_MOVELINEUP, VIRTKEY, SHIFT, CONTROL, NOINVERT - "W", IDM_VIEW_WORDWRAP, VIRTKEY, CONTROL, NOINVERT - "W", IDM_EDIT_TRIMLINES, VIRTKEY, ALT, NOINVERT - "W", IDM_EDIT_COLUMNWRAP, VIRTKEY, SHIFT, CONTROL, NOINVERT - "X", IDM_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT - "X", IDM_EDIT_INSERT_TAG, VIRTKEY, ALT, NOINVERT - "X", IDM_EDIT_CHAR2HEX, VIRTKEY, CONTROL, ALT, NOINVERT - "X", IDM_EDIT_CUTLINE, VIRTKEY, SHIFT, CONTROL, NOINVERT - "Y", IDM_EDIT_REDO, VIRTKEY, CONTROL, NOINVERT - "Y", IDM_EDIT_MERGEBLANKLINES, VIRTKEY, ALT, NOINVERT - "Y", IDM_EDIT_UNDO, VIRTKEY, SHIFT, CONTROL, NOINVERT - "Z", IDM_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT - "Z", IDM_EDIT_STRIP1STCHAR, VIRTKEY, ALT, NOINVERT - "Z", IDM_EDIT_REDO, VIRTKEY, SHIFT, CONTROL, NOINVERT VK_OEM_PERIOD, IDM_EDIT_INSERT_GUID, VIRTKEY, SHIFT, CONTROL, NOINVERT END diff --git a/src/VersionEx.h b/src/VersionEx.h index 5e12bf8dc..4b3bb402c 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -1,4 +1,4 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 0 #define VERSION_REV 2 -#define VERSION_BUILD 422 +#define VERSION_BUILD 438