Page 1 of 2

ACTL_GETWINDOWTYPE дает 0 в VE_CLOSE вызванном после диалога

Posted: Thu 05 Jan, 2012 16:30
by NightRoman
ACTL_GETWINDOWTYPE дает 0 в VE_CLOSE вызванном после диалога

Сценарий такой. Запускается диалог со списком файлов (типа история), выбирается по хоткею текущий файл для просмотра, диалог закрывается, запускается вьюер. При выходе из вьюера по Esc вызывается обработка VE_CLOSE, там есть вызов ACTL_GETWINDOWTYPE и он дает 0, то есть сбой.

Так же ведет себя и Фар2 с ACTL_GETSHORTWINDOWINFO (которую заменила команда ACTL_GETWINDOWTYPE в Фар3).

Вопрос - это фича или? Это совершенно не фатально лично для меня, просто хочется разобраться. Кроме того, может, это и неполадка-таки.

ACTL_GETWINDOWTYPE дает 0 в VE_CLOSE вызванном после диа

Posted: Wed 09 Jul, 2014 12:44
by John Doe
Видимо та же проблема, но только более тотальная: одинаково в редакторе и вьювере, никакого "после диалога" не требуется.
Просто ACTL_GETWINDOWTYPE и ACTL_GETWINDOWINFO не работают, будучи вызваны из EE_CLOSE/EV_CLOSE
  1. local F = far.Flags
  2.  
  3. local msg = "ACTL_GETWINDOWINFO"
  4.  
  5. local function diag(...)
  6.  
  7.   local info = far.AdvControl(msg)
  8.  
  9.   if not info then far.Show(msg,...) end
  10.  
  11. end
  12.  
  13. Event {
  14.  
  15.   group="ViewerEvent";
  16.  
  17.   action=diag;
  18.  
  19. }
  20.  
  21. Event {
  22.  
  23.   group="EditorEvent";
  24.  
  25.   action=diag;
  26.  
  27. }

Re: ACTL_GETWINDOWTYPE дает 0 в VE_CLOSE вызванном после диа

Posted: Wed 09 Jul, 2014 13:47
by zg
3985.

ps: а вы вот специально тестовый пример делаете так, что проблему он конечно демонстрирует, но вот для отладки от него никакой пользы?

Re: ACTL_GETWINDOWTYPE дает 0 в VE_CLOSE вызванном после диа

Posted: Wed 09 Jul, 2014 13:52
by John Doe
А что нужно было для отладки?

ACTL_GETWINDOWTYPE дает 0 в VE_CLOSE вызванном после диа

Posted: Wed 09 Jul, 2014 14:06
by zg
например так:
в отличии от вашего:
1. ACTL_GETWINDOWINFO вызывается только в проблемном месте.
2. для разных событий разный код.
3. ситуации работает, не работает, события ?E_CLOSE отвалились совсем — различаются.

Re: ACTL_GETWINDOWTYPE дает 0 в VE_CLOSE вызванном после диа

Posted: Wed 09 Jul, 2014 14:14
by John Doe
Да, первый мой тест был похож на ваш.
А тут же я привёл другой, составленный так специально, чтобы убедиться, что проблема возникает только при закрытии файла.
(редактор/вьювер видно на экране)

Re: Глюки и баги, появившиеся в «ночных сборках»

Posted: Thu 10 Jul, 2014 09:51
by John Doe
3987
ECTL_GETINFO и VCTL_GETINFO обламываются, если вызваны из EE_CLOSE/VE_CLOSE

Re: Глюки и баги, появившиеся в «ночных сборках»

Posted: Thu 10 Jul, 2014 09:53
by zg
John Doe wrote:ECTL_GETINFO и VCTL_GETINFO обламываются, если вызваны из EE_CLOSE/VE_CLOSE
вдумчиво читаем энциклопедию.

Re: Проблемы оконного менеджера

Posted: Thu 10 Jul, 2014 09:56
by John Doe
Чтение не помогает. Ещё вчера всё работало

Re: Проблемы оконного менеджера

Posted: Thu 10 Jul, 2014 09:58
by zg
John Doe wrote:Чтение не помогает. Ещё вчера всё работало.
могу прочитать я, но это платная услуга.

Re: Проблемы оконного менеджера

Posted: Thu 10 Jul, 2014 10:11
by John Doe
http://api.farmanager.com/ru/structures/processeditoreventinfo.html#EE_CLOSE wrote:"В EE_CLOSE допускается использовать только ECTL_GETINFO и ECTL_GETBOOKMARKS."
P.S.
В статье о VE_CLOSE такого замечания нет. Но тоже, ещё вчера работало.

Re: Проблемы оконного менеджера

Posted: Thu 10 Jul, 2014 10:22
by zg
John Doe wrote:В статье о VE_CLOSE такого замечания нет. Но тоже, ещё вчера работало.
если в документации написано, что нельзя, а кто-то пользуется, то это проблем того, кто пользуется.

Re: Проблемы оконного менеджера

Posted: Thu 10 Jul, 2014 10:25
by John Doe
Регрессия налицо.
Документация несовершенна, так почему бы не обсудить каждый случай отдельно.

Re: Проблемы оконного менеджера

Posted: Thu 10 Jul, 2014 10:32
by zg
John Doe wrote:Документация несовершенна.
в документации в данном случае написано всё верно.

Re: Проблемы оконного менеджера

Posted: Thu 10 Jul, 2014 10:36
by John Doe
А что с ECTL_GETINFO?