[BUG_FIXED] Fix a saving issue in session snapshot & periodic backup feature while backup file is deleted or read-only.
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@1247 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
e40f8a2d7d
commit
908d12a061
|
@ -619,7 +619,28 @@ bool Notepad_plus::fileCloseAll(bool doDeleteBackup, bool isSnapshotMode)
|
||||||
{
|
{
|
||||||
if (isSnapshotMode)
|
if (isSnapshotMode)
|
||||||
{
|
{
|
||||||
|
if (buf->getBackupFileName() == TEXT("") || !::PathFileExists(buf->getBackupFileName().c_str())) //backup file has been deleted from outside
|
||||||
|
{
|
||||||
|
// warning user and save it if user want it.
|
||||||
|
activateBuffer(id, MAIN_VIEW);
|
||||||
|
if(!activateBuffer(id, SUB_VIEW))
|
||||||
|
switchEditViewTo(MAIN_VIEW);
|
||||||
|
|
||||||
|
TCHAR pattern[140] = TEXT("Your backup file cannot be found (deleted from outside).\rSave it otherwise your data will be lost\rDo you wan to save file \"%s\" ?");
|
||||||
|
TCHAR phrase[512];
|
||||||
|
wsprintf(phrase, pattern, buf->getFullPathName());
|
||||||
|
int res = doActionOrNot(TEXT("Save"), phrase, MB_YESNOCANCEL | MB_ICONQUESTION | MB_APPLMODAL);
|
||||||
|
//int res = doSaveOrNot(buf->getFullPathName());
|
||||||
|
if (res == IDYES)
|
||||||
|
{
|
||||||
|
if (!fileSave(id))
|
||||||
|
return false; //abort entire procedure
|
||||||
|
}
|
||||||
|
else if (res == IDCANCEL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -652,7 +673,27 @@ bool Notepad_plus::fileCloseAll(bool doDeleteBackup, bool isSnapshotMode)
|
||||||
{
|
{
|
||||||
if (isSnapshotMode)
|
if (isSnapshotMode)
|
||||||
{
|
{
|
||||||
|
if (buf->getBackupFileName() == TEXT("") || !::PathFileExists(buf->getBackupFileName().c_str())) //backup file has been deleted from outside
|
||||||
|
{
|
||||||
|
// warning user and save it if user want it.
|
||||||
|
activateBuffer(id, SUB_VIEW);
|
||||||
|
switchEditViewTo(SUB_VIEW);
|
||||||
|
|
||||||
|
TCHAR pattern[140] = TEXT("Your backup file cannot be found (deleted from outside).\rSave it otherwise your data will be lost\rDo you wan to save file \"%s\" ?");
|
||||||
|
TCHAR phrase[512];
|
||||||
|
wsprintf(phrase, pattern, buf->getFullPathName());
|
||||||
|
int res = doActionOrNot(TEXT("Save"), phrase, MB_YESNOCANCEL | MB_ICONQUESTION | MB_APPLMODAL);
|
||||||
|
//int res = doSaveOrNot(buf->getFullPathName());
|
||||||
|
if (res == IDYES)
|
||||||
|
{
|
||||||
|
if (!fileSave(id))
|
||||||
|
return false; //abort entire procedure
|
||||||
|
}
|
||||||
|
else if (res == IDCANCEL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -743,11 +743,18 @@ bool FileManager::backupCurrentBuffer()
|
||||||
hasModifForSession = true;
|
hasModifForSession = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TCHAR fullpath[MAX_PATH];
|
TCHAR fullpath[MAX_PATH];
|
||||||
::GetFullPathName(backupFilePath.c_str(), MAX_PATH, fullpath, NULL);
|
::GetFullPathName(backupFilePath.c_str(), MAX_PATH, fullpath, NULL);
|
||||||
::GetLongPathName(fullpath, fullpath, MAX_PATH);
|
::GetLongPathName(fullpath, fullpath, MAX_PATH);
|
||||||
|
|
||||||
|
// Make sure the backup file is not read only
|
||||||
|
DWORD dwFileAttribs = ::GetFileAttributes(fullpath);
|
||||||
|
if (dwFileAttribs & FILE_ATTRIBUTE_READONLY) // if file is read only, remove read only attribute
|
||||||
|
{
|
||||||
|
dwFileAttribs ^= FILE_ATTRIBUTE_READONLY;
|
||||||
|
::SetFileAttributes(fullpath, dwFileAttribs);
|
||||||
|
}
|
||||||
|
|
||||||
FILE *fp = UnicodeConvertor.fopen(fullpath, TEXT("wb"));
|
FILE *fp = UnicodeConvertor.fopen(fullpath, TEXT("wb"));
|
||||||
if (fp)
|
if (fp)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue