fix #297, cannot save in windows special folders

This commit is contained in:
Basile Burg 2018-04-16 14:12:46 +02:00
parent 747feb7e5c
commit 76273ffa49
1 changed files with 9 additions and 7 deletions

View File

@ -9,7 +9,7 @@ uses
SynEdit, SynPluginSyncroEdit, SynCompletion, SynEditKeyCmds, LazSynEditText, SynEdit, SynPluginSyncroEdit, SynCompletion, SynEditKeyCmds, LazSynEditText,
SynHighlighterLFM, SynEditHighlighter, SynEditMouseCmds, SynEditFoldedView, SynHighlighterLFM, SynEditHighlighter, SynEditMouseCmds, SynEditFoldedView,
SynEditMarks, SynEditTypes, SynHighlighterJScript, SynBeautifier, dialogs, SynEditMarks, SynEditTypes, SynHighlighterJScript, SynBeautifier, dialogs,
md5, Spin, LCLIntf, md5, Spin, LCLIntf, LazFileUtils,
//SynEditMarkupFoldColoring, //SynEditMarkupFoldColoring,
Clipbrd, fpjson, jsonparser, LazUTF8, LazUTF8Classes, Buttons, StdCtrls, Clipbrd, fpjson, jsonparser, LazUTF8, LazUTF8Classes, Buttons, StdCtrls,
ce_common, ce_writableComponent, ce_d2syn, ce_txtsyn, ce_dialogs, ce_dastworx, ce_common, ce_writableComponent, ce_d2syn, ce_txtsyn, ce_dialogs, ce_dastworx,
@ -2987,7 +2987,6 @@ begin
Lines.LoadFromFile(fname); Lines.LoadFromFile(fname);
fFilename := fname; fFilename := fname;
FileAge(fFilename, fFileDate); FileAge(fFilename, fFileDate);
ReadOnly := FileIsReadOnly(fFilename);
fModified := false; fModified := false;
if Showing then if Showing then
@ -3033,13 +3032,12 @@ procedure TCESynMemo.saveToFile(const fname: string);
var var
ext: string; ext: string;
begin begin
ext := fname.extractFilePath; if fname.fileExists and not FileIsWritable(fname) then
if FileIsReadOnly(ext) then
begin begin
getMessageDisplay.message('No write access in: ' + ext, self, amcEdit, amkWarn); getMessageDisplay.message('The file is read-only, save your changes in a copy',
self, amcEdit, amkWarn);
exit; exit;
end; end;
ReadOnly := false;
Lines.SaveToFile(fname); Lines.SaveToFile(fname);
fFilename := fname; fFilename := fname;
ext := fname.extractFileExt; ext := fname.extractFileExt;
@ -3060,8 +3058,12 @@ end;
procedure TCESynMemo.save; procedure TCESynMemo.save;
begin begin
if readOnly then if fFilename.fileExists and not FileIsWritable(fFilename) then
begin
getMessageDisplay.message('The file is read-only, save your changes in a copy',
self, amcEdit, amkWarn);
exit; exit;
end;
Lines.SaveToFile(fFilename); Lines.SaveToFile(fFilename);
FileAge(fFilename, fFileDate); FileAge(fFilename, fFileDate);
fModified := false; fModified := false;