diff options
author | elfmz <fenix1905@tut.by> | 2022-02-11 02:00:05 +0300 |
---|---|---|
committer | elfmz <fenix1905@tut.by> | 2022-02-11 02:00:05 +0300 |
commit | b61e9e7030f88c63c4d0e019d753288a482e193c (patch) | |
tree | 9070d8f12b8b98274cf10cd45df3fd228fc32f5a /far2l/src/plug | |
parent | 1b16d636d24de3cf90b6bc50966029318fcdd84e (diff) |
editor: futher refactor delete-on-close functionality
Diffstat (limited to 'far2l/src/plug')
-rw-r--r-- | far2l/src/plug/plugapi.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/far2l/src/plug/plugapi.cpp b/far2l/src/plug/plugapi.cpp index 1a464e74..1b1e945c 100644 --- a/far2l/src/plug/plugapi.cpp +++ b/far2l/src/plug/plugapi.cpp @@ -2104,12 +2104,9 @@ int FarEditorSynched( const wchar_t *FileName, const wchar_t *Title, Обработка EF_DELETEONLYFILEONCLOSE - этот флаг имеет более низкий приоритет по сравнению с EF_DELETEONCLOSE */ - int DeleteOnClose = 0; - - if (Flags & EF_DELETEONCLOSE) - DeleteOnClose = 1; - else if (Flags & EF_DELETEONLYFILEONCLOSE) - DeleteOnClose = 2; + std::shared_ptr<TempFileHolder> TFH; + if (Flags & (EF_DELETEONCLOSE|EF_DELETEONLYFILEONCLOSE)) + TFH = std::make_shared<TempFileHolder>(FileName, (Flags & EF_DELETEONCLOSE) != 0); int OpMode=FEOPMODE_QUERY; @@ -2131,14 +2128,15 @@ int FarEditorSynched( const wchar_t *FileName, const wchar_t *Title, if (Flags & EF_NONMODAL) { /* 09.09.2001 IS ! Добавим имя файла в историю, если потребуется */ - FileEditor *Editor=new(std::nothrow) FileEditor(FileName,CodePage,(CreateNew?FFILEEDIT_CANNEWFILE:0)|FFILEEDIT_ENABLEF6|(DisableHistory?FFILEEDIT_DISABLEHISTORY:0)|(Locked?FFILEEDIT_LOCKED:0), + FileEditor *Editor=new(std::nothrow) FileEditor(FileName,CodePage, + (CreateNew?FFILEEDIT_CANNEWFILE:0) | FFILEEDIT_ENABLEF6 | (DisableHistory?FFILEEDIT_DISABLEHISTORY:0) | (Locked?FFILEEDIT_LOCKED:0), StartLine,StartChar,Title, - X1,Y1,X2,Y2, - DeleteOnClose,OpMode); + X1,Y1,X2,Y2,OpMode); if (Editor) { editorExitCode=Editor->GetExitCode(); + Editor->SetFileHolder(TFH); // добавочка - проверка кода возврата (почему возникает XC_OPEN_ERROR - см. код FileEditor::Init()) if (editorExitCode == XC_OPEN_ERROR || editorExitCode == XC_LOADING_INTERRUPTED) @@ -2173,7 +2171,8 @@ int FarEditorSynched( const wchar_t *FileName, const wchar_t *Title, FileEditor Editor(FileName,CodePage,(CreateNew?FFILEEDIT_CANNEWFILE:0)|(DisableHistory?FFILEEDIT_DISABLEHISTORY:0)|(Locked?FFILEEDIT_LOCKED:0), StartLine,StartChar,Title, X1,Y1,X2,Y2, - DeleteOnClose,OpMode); + OpMode); + Editor.SetFileHolder(TFH); editorExitCode=Editor.GetExitCode(); // выполним предпроверку (ошибки разные могут быть) |