View Issue Details

IDProjectCategoryView StatusLast Update
0002562WishesPlugins API.Editorpublic2014-07-28 20:54
ReporterJohnDoe Assigned To 
PrioritynormalSeverityminorReproducibilityN/A
Status newResolutionopen 
Product Version3.0 
Summary0002562: функция Editor: EF_NONMODAL, возвращаемое значение при отмене открытия редактора
DescriptionВ случае если функция Editor была вызвана с флагом EF_NONMODAL, то возвращается одно из двух значений EEC_OPEN_ERROR или EEC_MODIFIED.

Хочется чтобы кроме того распознавалась ситуация с отменой открытия (EEC_LOADING_INTERRUPTED), т.к. иначе по возвращаемому значению невозможно понять открылся ли вообще редактор.
Steps To ReproduceТипичная ситуация с отмена открытия возникает если файл уже открыт (например в другом окне редакторе).
В этом случае при вызове функции Editor отображается Message, в котором пользователю предоставляется выбор как именно должен быть открыт файл: { Current } [ New instance ] [ Reload ]
Если пользователь нажмёт Esc, то загрузка прервётся, но функция всё равно вернёт EEC_MODIFIED
Additional Informationhttp://api.farmanager.com/ru/service_functions/editor.html
TagsNo tags attached.
Build

Activities

vskirdin

2014-01-16 06:20

administrator   bugnote:0011681

<беглый взгляд>
XC_LOADING_INTERRUPTED никогда не возвращается при FFILEEDIT_ENABLEF6.
Если вставить возврат XC_LOADING_INTERRUPTED в FileEditor::Init - падаем.
</беглый взгляд>

JohnDoe

2014-04-15 10:11

updater   bugnote:0012213

По результату 0002608 данный тикет распространяется также и на модальный редактор. Описание переделать, или и так сойдёт?

vskirdin

2014-04-22 12:05

administrator   bugnote:0012261

Вопрос(ы)
(учитываем, что EEC_OPEN_ERROR, EEC_MODIFIED и EEC_NOT_MODIFIED влияют на плагины, скажем архивные)
(речь про EF_NONMODAL)

Ситуация 1.
Был открыт файл. Вызываем Editor(EF_NONMODAL). В диалоге (или флагом EF_OPENMODE_USEEXISTING) говорим "{ Current }". Что должен получить плагин? EEC_OPENED_EXISTING или EEC_NOT_MODIFIED?

Ситуация 2.
Был открыт файл. Вызываем Editor(EF_NONMODAL). В диалоге (или флагом EF_OPENMODE_RELOADIFOPEN) говорим "[ Reload ]". Что должен получить плагин после получения управления? EEC_RELOAD, EEC_MODIFIED или EEC_NOT_MODIFIED?
Замечание: плагин получит управление в двух случаях: "пользователь вышел из редактора (нажал Esc)" и "пользователь переключился (Ctrl-Tab или F12) в другой фрейм".

Ситуация 3.
Был открыт файл. Вызываем Editor(EF_NONMODAL|EF_IMMEDIATERETURN). В диалоге (или флагом EF_OPENMODE_RELOADIFOPEN) говорим "[ Reload ]". Что должен получить плагин? EEC_RELOAD, EEC_MODIFIED или EEC_NOT_MODIFIED?

и т.д.

Или... чтобы не ломать АПИ не возвращать в плагин коды:
#ifdef FAR_USE_INTERNALS
    EEC_OPENED_EXISTING = 4,
    EEC_ALREADY_EXISTS = 5,
    EEC_OPEN_NEWINSTANCE = 6,
    EEC_RELOAD = 7,
#endif // END FAR_USE_INTERNALS
ы?

JohnDoe

2014-04-23 11:49

updater   bugnote:0012279

Да, плагины могут поломаться...

JohnDoe

2014-04-24 09:25

updater   bugnote:0012285

>(речь про EF_NONMODAL)
Разве в этом случае имеет смысл возвращать EEC_MODIFIED/EEC_NOT_MODIFIED?

vskirdin

2014-04-24 14:35

administrator   bugnote:0012286

Есть возможность получить эту инфу, так почему бы и нет?

JohnDoe

2014-04-24 14:52

updater   bugnote:0012287

Сейчас в EF_NONMODAL не может вернуться EEC_NOT_MODIFIED.
И я не представляю даже что тут можно сделать, учитывая что при EF_NONMODAL возврат из функции происходит не при закрытии редактора, а при потере фокуса.

Кстати интересно узнать почему так сделано.
Я например не вижу смысла использовать EF_NONMODAL без EF_IMMEDIATERETURN.

vskirdin

2014-04-29 10:47

administrator   bugnote:0012303

На "поиграться":
1) плагин http://farmanager.com/farbugs/editor_flags.7z
2) Far с "новыми" кода возврата для Editor() http://farmanager.com/farbugs/m0002562.1.7z

JohnDoe

2014-04-29 11:16

updater   bugnote:0012305

Какие изменения включены?
Планируется ли это в релиз?

vskirdin

2014-04-29 12:48

administrator   bugnote:0012306

В релиз только после договоренности, что кроме существующих кодов возврата EEC_OPEN_ERROR, EEC_MODIFIED и EEC_NOT_MODIFIED плагины готовы будут принять еще несколько.

JohnDoe

2014-07-28 20:54

updater   bugnote:0012812

Частный случай: если находясь в модальном редакторе попытаться открыть редактор с флагом EF_NONMODAL, то редактор всё равно будет модальным.

Если же при этом пытаться открыть уже открытый файл используя флаг EF_OPENMODE_USEEXISTING, то редактор не откроется, но плагин об этом не узнает, т.к. функция Editor вернёт EEC_NOT_MODIFIED (вместо EEC_LOADING_INTERRUPTED).

Issue History

Date Modified Username Field Change
2014-01-15 15:31 JohnDoe New Issue
2014-01-16 06:20 vskirdin Note Added: 0011681
2014-04-15 10:11 JohnDoe Note Added: 0012213
2014-04-22 12:05 vskirdin Note Added: 0012261
2014-04-23 11:49 JohnDoe Note Added: 0012279
2014-04-24 09:25 JohnDoe Note Added: 0012285
2014-04-24 14:35 vskirdin Note Added: 0012286
2014-04-24 14:52 JohnDoe Note Added: 0012287
2014-04-29 10:47 vskirdin Note Added: 0012303
2014-04-29 11:16 JohnDoe Note Added: 0012305
2014-04-29 12:48 vskirdin Note Added: 0012306
2014-07-28 20:54 JohnDoe Note Added: 0012812