[BUG_FIXED] Fix SaveAll command hanging issue while session snapshot is enabled.

[CHANGE_BEHAVIOUR] Disable session snapshot while command line -nosession is used.

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@1240 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
Don Ho 2014-05-17 15:35:09 +00:00
parent 924dc4d4ef
commit 4ab4945f0a
6 changed files with 14 additions and 21 deletions

View File

@ -128,7 +128,7 @@ Notepad_plus::Notepad_plus(): _mainWindowStatus(0), _pDocTab(NULL), _pEditView(N
_linkTriggered(true), _isHotspotDblClicked(false), _isFolding(false), _linkTriggered(true), _isHotspotDblClicked(false), _isFolding(false),
_sysMenuEntering(false), _sysMenuEntering(false),
_autoCompleteMain(&_mainEditView), _autoCompleteSub(&_subEditView), _smartHighlighter(&_findReplaceDlg), _autoCompleteMain(&_mainEditView), _autoCompleteSub(&_subEditView), _smartHighlighter(&_findReplaceDlg),
_isFileOpening(false), _rememberThisSession(true), _pAnsiCharPanel(NULL), _pClipboardHistoryPanel(NULL) _isFileOpening(false), _pAnsiCharPanel(NULL), _pClipboardHistoryPanel(NULL)
{ {
ZeroMemory(&_prevSelectedRange, sizeof(_prevSelectedRange)); ZeroMemory(&_prevSelectedRange, sizeof(_prevSelectedRange));

View File

@ -422,8 +422,6 @@ private:
vector<pair<int, int> > _hideLinesMarks; vector<pair<int, int> > _hideLinesMarks;
StyleArray _hotspotStyles; StyleArray _hotspotStyles;
bool _rememberThisSession; // always true. except -nosession is indicated on the launch time
AnsiCharPanel *_pAnsiCharPanel; AnsiCharPanel *_pAnsiCharPanel;
ClipboardHistoryPanel *_pClipboardHistoryPanel; ClipboardHistoryPanel *_pClipboardHistoryPanel;

View File

@ -63,7 +63,7 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
::SystemParametersInfo(SPI_GETWORKAREA, 0, &workAreaRect, 0); ::SystemParametersInfo(SPI_GETWORKAREA, 0, &workAreaRect, 0);
NppParameters *pNppParams = NppParameters::getInstance(); NppParameters *pNppParams = NppParameters::getInstance();
const NppGUI & nppGUI = pNppParams->getNppGUI(); NppGUI & nppGUI = (NppGUI &)pNppParams->getNppGUI();
if (cmdLineParams->_isNoPlugin) if (cmdLineParams->_isNoPlugin)
_notepad_plus_plus_core._pluginsManager.disable(); _notepad_plus_plus_core._pluginsManager.disable();
@ -131,7 +131,8 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
{ {
::SendMessage(_hSelf, WM_COMMAND, IDM_VIEW_ALWAYSONTOP, 0); ::SendMessage(_hSelf, WM_COMMAND, IDM_VIEW_ALWAYSONTOP, 0);
} }
_notepad_plus_plus_core._rememberThisSession = !cmdLineParams->_isNoSession;
nppGUI._isCmdlineNosessionActivated = cmdLineParams->_isNoSession;
if (nppGUI._rememberLastSession && !cmdLineParams->_isNoSession) if (nppGUI._rememberLastSession && !cmdLineParams->_isNoSession)
{ {
_notepad_plus_plus_core.loadLastSession(); _notepad_plus_plus_core.loadLastSession();

View File

@ -474,7 +474,8 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
{ {
CmdLineParams *cmdLineParam = (CmdLineParams *)pCopyData->lpData; CmdLineParams *cmdLineParam = (CmdLineParams *)pCopyData->lpData;
pNppParam->setCmdlineParam(*cmdLineParam); pNppParam->setCmdlineParam(*cmdLineParam);
_rememberThisSession = !cmdLineParam->_isNoSession; NppGUI nppGui = (NppGUI)pNppParam->getNppGUI();
nppGui._isCmdlineNosessionActivated = cmdLineParam->_isNoSession;
break; break;
} }
@ -530,7 +531,9 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
case NPPM_INTERNAL_SAVECURRENTSESSION: case NPPM_INTERNAL_SAVECURRENTSESSION:
{ {
NppParameters *nppParam = NppParameters::getInstance(); NppParameters *nppParam = NppParameters::getInstance();
if (nppParam->getNppGUI()._rememberLastSession && _rememberThisSession) const NppGUI nppGui = nppParam->getNppGUI();
if (nppGui._rememberLastSession && !nppGui._isCmdlineNosessionActivated)
{ {
Session currentSession; Session currentSession;
getCurrentOpenedFiles(currentSession, true); getCurrentOpenedFiles(currentSession, true);
@ -1472,7 +1475,7 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
saveUserDefineLangs(); saveUserDefineLangs();
saveShortcuts(); saveShortcuts();
if (nppgui._rememberLastSession && _rememberThisSession) if (nppgui._rememberLastSession && !nppgui._isCmdlineNosessionActivated)
saveSession(currentSession); saveSession(currentSession);
//Sends WM_DESTROY, Notepad++ will end //Sends WM_DESTROY, Notepad++ will end

View File

@ -109,16 +109,6 @@ BOOL Notepad_plus::notify(SCNotification *notification)
} }
bool isDirty = notification->nmhdr.code == SCN_SAVEPOINTLEFT; bool isDirty = notification->nmhdr.code == SCN_SAVEPOINTLEFT;
buf->setDirty(isDirty); buf->setDirty(isDirty);
if (notification->nmhdr.code == SCN_SAVEPOINTREACHED)
{
bool isSnapshotMode = NppParameters::getInstance()->getNppGUI().isSnapshotMode();
if (isSnapshotMode)
{
MainFileManager->backupCurrentBuffer();
}
}
break; break;
} }

View File

@ -709,7 +709,7 @@ struct NppGUI
_tabStatus(TAB_DRAWTOPBAR | TAB_DRAWINACTIVETAB | TAB_DRAGNDROP), _splitterPos(POS_HORIZOTAL),\ _tabStatus(TAB_DRAWTOPBAR | TAB_DRAWINACTIVETAB | TAB_DRAGNDROP), _splitterPos(POS_HORIZOTAL),\
_userDefineDlgStatus(UDD_DOCKED), _tabSize(8), _tabReplacedBySpace(false), _fileAutoDetection(cdEnabled), _fileAutoDetectionOriginalValue(_fileAutoDetection),\ _userDefineDlgStatus(UDD_DOCKED), _tabSize(8), _tabReplacedBySpace(false), _fileAutoDetection(cdEnabled), _fileAutoDetectionOriginalValue(_fileAutoDetection),\
_checkHistoryFiles(true) ,_enableSmartHilite(true), _disableSmartHiliteTmp(false), _enableTagsMatchHilite(true), _enableTagAttrsHilite(true), _enableHiliteNonHTMLZone(false),\ _checkHistoryFiles(true) ,_enableSmartHilite(true), _disableSmartHiliteTmp(false), _enableTagsMatchHilite(true), _enableTagAttrsHilite(true), _enableHiliteNonHTMLZone(false),\
_isMaximized(false), _isMinimizedToTray(false), _rememberLastSession(true), _detectEncoding(true), _backup(bak_none), _useDir(false), _backupDir(TEXT("")),\ _isMaximized(false), _isMinimizedToTray(false), _rememberLastSession(true), _isCmdlineNosessionActivated(false), _detectEncoding(true), _backup(bak_none), _useDir(false), _backupDir(TEXT("")),\
_doTaskList(true), _maitainIndent(true), _openSaveDir(dir_followCurrent), _styleMRU(true), _styleURL(0),\ _doTaskList(true), _maitainIndent(true), _openSaveDir(dir_followCurrent), _styleMRU(true), _styleURL(0),\
_autocStatus(autoc_both), _autocFromLen(1), _funcParams(false), _definedSessionExt(TEXT("")),\ _autocStatus(autoc_both), _autocFromLen(1), _funcParams(false), _definedSessionExt(TEXT("")),\
_doesExistUpdater(false), _caretBlinkRate(250), _caretWidth(1), _enableMultiSelection(false), _shortTitlebar(false), _themeName(TEXT("")), _isLangMenuCompact(false),\ _doesExistUpdater(false), _caretBlinkRate(250), _caretWidth(1), _enableMultiSelection(false), _shortTitlebar(false), _themeName(TEXT("")), _isLangMenuCompact(false),\
@ -752,7 +752,8 @@ struct NppGUI
bool _isMaximized; bool _isMaximized;
bool _isMinimizedToTray; bool _isMinimizedToTray;
bool _rememberLastSession; bool _rememberLastSession; // remember next session boolean will be written in the settings
bool _isCmdlineNosessionActivated; // used for if -nosession is indicated on the launch time
bool _detectEncoding; bool _detectEncoding;
bool _doTaskList; bool _doTaskList;
bool _maitainIndent; bool _maitainIndent;
@ -815,7 +816,7 @@ struct NppGUI
generic_string _themeName; generic_string _themeName;
MultiInstSetting _multiInstSetting; MultiInstSetting _multiInstSetting;
bool _fileSwitcherWithoutExtColumn; bool _fileSwitcherWithoutExtColumn;
bool isSnapshotMode() const {return _isSnapshotMode && _rememberLastSession;}; bool isSnapshotMode() const {return _isSnapshotMode && _rememberLastSession && !_isCmdlineNosessionActivated;};
bool _isSnapshotMode; bool _isSnapshotMode;
size_t _snapshotBackupTiming; size_t _snapshotBackupTiming;
}; };