ACTL_COMMIT

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

ACTL_COMMIT

Post by zg » Tue 22 Jul, 2014 13:12

John Doe wrote:Сейчас без ACTL_COMMIT не обойтись.
например?

User avatar
John Doe
Бюрократ
Posts: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 times

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

Post by John Doe » Tue 22 Jul, 2014 13:17

В энциклопедии приводится пример с ACTL_SETCURRENTWINDOW.
Другой пример был выше (после ECTL_QUIT тоже нужен ACTL_COMMIT)

User avatar
John Doe
Бюрократ
Posts: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 times

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

Post by John Doe » Tue 22 Jul, 2014 15:36

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

P.S.
С вьювером этой проблемы нет.

User avatar
John Doe
Бюрократ
Posts: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 times

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

Post by John Doe » Tue 02 Sep, 2014 15:02

  1. local F = far.Flags
  2. editor.Editor("a",nil,0,0,-1,-1,bit64.bor(F.EF_NONMODAL,F.EF_CREATENEW,F.EF_IMMEDIATERETURN))
  3. editor.Editor("b",nil,0,0,-1,-1,bit64.bor(F.EF_NONMODAL,F.EF_CREATENEW,F.EF_IMMEDIATERETURN))
  4. editor.Quit()
  5. --far.AdvControl"ACTL_COMMIT"
  6. editor.Quit()
Без ACTL_COMMIT закроется только один редактор из двух открытых. Это нормально?

User avatar
zg
zero-gravity
Posts: 5241
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Sun 07 Sep, 2014 23:12

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. editor.Editor("a",nil,0,0,-1,-1,bit64.bor(F.EF_NONMODAL,F.EF_CREATENEW,F.EF_IMMEDIATERETURN))
  3. editor.Editor("b",nil,0,0,-1,-1,bit64.bor(F.EF_NONMODAL,F.EF_CREATENEW,F.EF_IMMEDIATERETURN))
  4. editor.Quit()
  5. editor.Quit()
баг, то исправляется он единственно возможным способом — принудительным коммитом в реализации ?CTL_QUIT. после этого останется только ACTL_SETCURRENTWINDOW которому нужен ACTL_COMMIT, а учитывая, что без ACTL_COMMIT им никто не пользуется (оно падало, а никто и не заметил), то получается, что ACTL_COMMIT не нужен.
John Doe wrote:И ещё один.
Недавно я уже жаловался, что при выполнении такого кода событие EE_CLOSE не приходит при закрытии редактора "a"
сейчас — работает.

User avatar
John Doe
Бюрократ
Posts: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 times

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

Post by John Doe » Mon 08 Sep, 2014 10:49

zg wrote:т.е. если считать, что то что происходит при [...] баг, то исправляется он единственно возможным способом — принудительным коммитом в реализации ?CTL_QUIT. после этого останется только ACTL_SETCURRENTWINDOW которому нужен ACTL_COMMIT, а учитывая, что без ACTL_COMMIT им никто не пользуется [...], то получается, что ACTL_COMMIT не нужен.
До переделки менеджера я пользовался в ?E_GOTFOCUS, для того чтобы получить информацию о предыдущем "экране". Уже не пользуюсь.

User avatar
zg
zero-gravity
Posts: 5241
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Mon 08 Sep, 2014 11:03

John Doe wrote:До переделки менеджера я пользовался в ?E_GOTFOCUS, для того чтобы получить информацию о предыдущем "экране". Уже не пользуюсь.
это к чему было?

User avatar
John Doe
Бюрократ
Posts: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 times

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

Post by John Doe » Mon 08 Sep, 2014 11:11

К тому, что ACTL_COMMIT был нужен не только для двух перечисленных вами функций.

User avatar
zg
zero-gravity
Posts: 5241
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Mon 08 Sep, 2014 11:17

John Doe wrote:К тому, что ACTL_COMMIT был нужен не только для двух перечисленных вами функций.
а ещё для чего?

User avatar
John Doe
Бюрократ
Posts: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 times

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

Post by John Doe » Mon 08 Sep, 2014 11:29

В документации нет чёткого указания.
Кто ещё и для чего мог использовать не знаю.
Я поделился своим сценарием.

User avatar
zg
zero-gravity
Posts: 5241
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Mon 08 Sep, 2014 11:34

John Doe wrote:Я поделился своим сценарием.
где он? я не вижу ни строчки кода.

User avatar
John Doe
Бюрократ
Posts: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 times

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

Post by John Doe » Mon 08 Sep, 2014 11:43

В новом менеджере это не работает, поэтому код я переписал.
Мой сценарий более не актуален.

User avatar
zg
zero-gravity
Posts: 5241
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Mon 08 Sep, 2014 19:53

John Doe wrote:В новом менеджере это не работает, поэтому код я переписал.
Мой сценарий более не актуален.
я не понимаю, если код был легальный, в соответствии с документацией, и вдруг перестал работать, где ссылка на баг трекер? если же это был хак, который перестал работать, то какие претензии? а то выглядит, как обида: «ай-ай-ай, мой любимый хак поломали нехорошие разработчики, буду теперь во всех темах шум создавать».

User avatar
John Doe
Бюрократ
Posts: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 times

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

Post by John Doe » Tue 09 Sep, 2014 07:32

в соответствии с документацией
Это что-ли "например" документация?
если же это был хак, который перестал работать, то какие претензии?
Судя по документации ACTL_COMMIT это и есть хак.
Претензий ноль.
Я озвучил факт, а вы о каких-то обидах.

User avatar
zg
zero-gravity
Posts: 5241
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Tue 09 Sep, 2014 08:58

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

User avatar
John Doe
Бюрократ
Posts: 11096
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 67 times

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

Post by John Doe » Tue 09 Sep, 2014 09:02

вы так говорите, как будто я писал документацию и добавлял этот самый ACTL_COMMIT. хотя на самом деле, когда добавляли ACTL_COMMIT, я и альфатестером-то скорее всего не был.
Забавно.
Вначале вы ссылаетесь на эту самую документацию, а потом как бы и непричём.
у вас — одни сопли.
Вам мерещится.

Post Reply

Return to “Development”