ACTL_COMMIT

Разработка Far.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

ACTL_COMMIT

Post by zg »

John Doe wrote:Сейчас без ACTL_COMMIT не обойтись.
например?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

В энциклопедии приводится пример с ACTL_SETCURRENTWINDOW.
Другой пример был выше (после ECTL_QUIT тоже нужен ACTL_COMMIT)
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

И ещё один.
Недавно я уже жаловался, что при выполнении такого кода событие EE_CLOSE не приходит при закрытии редактора "a":
  1. editor.Editor("a",nil,0,0,-1,-1,bit64.bor(F.EF_NONMODAL,F.EF_CREATENEW,F.EF_IMMEDIATERETURN))
  2.  
  3. local a = editor.GetInfo().EditorID
  4.  
  5. editor.Editor("b",nil,0,0,-1,-1,bit64.bor(F.EF_NONMODAL,F.EF_CREATENEW,F.EF_IMMEDIATERETURN))
  6.  
  7. local b = editor.GetInfo().EditorID
  8.  
  9. editor.Quit(b)
  10.  
  11. --far.AdvControl"ACTL_COMMIT"
  12.  
  13. editor.Quit(a)
  14.  
  15. far.Show(a,b)
ACTL_COMMIT помогает, хотя в данном случае это точно не выход.

P.S.
С вьювером этой проблемы нет.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

  1. local F = far.Flags
  2.  
  3. editor.Editor("a",nil,0,0,-1,-1,bit64.bor(F.EF_NONMODAL,F.EF_CREATENEW,F.EF_IMMEDIATERETURN))
  4.  
  5. editor.Editor("b",nil,0,0,-1,-1,bit64.bor(F.EF_NONMODAL,F.EF_CREATENEW,F.EF_IMMEDIATERETURN))
  6.  
  7. editor.Quit()
  8.  
  9. --far.AdvControl"ACTL_COMMIT"
  10.  
  11. editor.Quit()
Без ACTL_COMMIT закроется только один редактор из двух открытых. Это нормально?
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:В энциклопедии приводится пример с ACTL_SETCURRENTWINDOW.
Другой пример был выше (после ECTL_QUIT тоже нужен ACTL_COMMIT)
ACTL_SETCURRENTWINDOW, ECTL_QUIT, VCTL_QUIT это функции, которые делают не совсем то, что от них интуитивно ожидается. ACTL_SETCURRENTWINDOW не переключает окно, а всего лишь посылает сообщение оконному менеджеру о том, что надо бы переключиться. ?CTL_QUIT тоже ничего не закрывает, а лишь посылает сообщение удалить «текущий на момент посылки сообщения» объект. реально до первого коммита ничего не удаляется. поэтому следующий вызов вообще ничего не сделает. т.е. если считать, что то что происходит при:
  1. local F = far.Flags
  2.  
  3. editor.Editor("a",nil,0,0,-1,-1,bit64.bor(F.EF_NONMODAL,F.EF_CREATENEW,F.EF_IMMEDIATERETURN))
  4.  
  5. editor.Editor("b",nil,0,0,-1,-1,bit64.bor(F.EF_NONMODAL,F.EF_CREATENEW,F.EF_IMMEDIATERETURN))
  6.  
  7. editor.Quit()
  8.  
  9. editor.Quit()
баг, то исправляется он единственно возможным способом — принудительным коммитом в реализации ?CTL_QUIT. после этого останется только ACTL_SETCURRENTWINDOW которому нужен ACTL_COMMIT, а учитывая, что без ACTL_COMMIT им никто не пользуется (оно падало, а никто и не заметил), то получается, что ACTL_COMMIT не нужен.
John Doe wrote:И ещё один.
Недавно я уже жаловался, что при выполнении такого кода событие EE_CLOSE не приходит при закрытии редактора "a"
сейчас — работает.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

zg wrote:т.е. если считать, что то что происходит при [...] баг, то исправляется он единственно возможным способом — принудительным коммитом в реализации ?CTL_QUIT. после этого останется только ACTL_SETCURRENTWINDOW которому нужен ACTL_COMMIT, а учитывая, что без ACTL_COMMIT им никто не пользуется [...], то получается, что ACTL_COMMIT не нужен.
До переделки менеджера я пользовался в ?E_GOTFOCUS, для того чтобы получить информацию о предыдущем "экране". Уже не пользуюсь.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:До переделки менеджера я пользовался в ?E_GOTFOCUS, для того чтобы получить информацию о предыдущем "экране". Уже не пользуюсь.
это к чему было?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

К тому, что ACTL_COMMIT был нужен не только для двух перечисленных вами функций.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:К тому, что ACTL_COMMIT был нужен не только для двух перечисленных вами функций.
а ещё для чего?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

В документации нет чёткого указания.
Кто ещё и для чего мог использовать не знаю.
Я поделился своим сценарием.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:Я поделился своим сценарием.
где он? я не вижу ни строчки кода.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

В новом менеджере это не работает, поэтому код я переписал.
Мой сценарий более не актуален.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:В новом менеджере это не работает, поэтому код я переписал.
Мой сценарий более не актуален.
я не понимаю, если код был легальный, в соответствии с документацией, и вдруг перестал работать, где ссылка на баг трекер? если же это был хак, который перестал работать, то какие претензии? а то выглядит, как обида: «ай-ай-ай, мой любимый хак поломали нехорошие разработчики, буду теперь во всех темах шум создавать».
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

в соответствии с документацией
Это что-ли "например" документация?
если же это был хак, который перестал работать, то какие претензии?
Судя по документации ACTL_COMMIT это и есть хак.
Претензий ноль.
Я озвучил факт, а вы о каких-то обидах.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:
в соответствии с документацией
Это что-ли "например" документация?
вы так говорите, как будто я писал документацию и добавлял этот самый ACTL_COMMIT. хотя на самом деле, когда добавляли ACTL_COMMIT, я и альфатестером-то скорее всего не был.
John Doe wrote:
если же это был хак, который перестал работать, то какие претензии?
Судя по документации ACTL_COMMIT это и есть хак.
так я вообще с самого начала это написал, там только вместо слова «хак», слово «костыль» было. хотя надо заметить, что встречаются практически полные аналоги.
John Doe wrote:Я озвучил факт, а вы о каких-то обидах.
Image
факт — это когда есть код. у вас — одни сопли.
Post Reply

Return to “Development”