Page 2 of 2

Re: Баг с кнопками

Posted: Wed Sep 12, 2018 12:13 am
by Leency
Залил #7354

Re: Баг с кнопками

Posted: Wed Oct 17, 2018 2:45 am
by theonlymirage
Сижу я тут с документацией, читаю, а там:

Code: Select all

Функция 12 - начать/закончить перерисовку окна. 
Подфункция 1 - начать перерисовку окна. 
Подфункция 2 - закончить перерисовку окна. 
Замечания:
  * Функция начала перерисовки удаляет все определённые
    функцией 8 кнопки, их следует определить повторно.
Обновляем документацию? Вероятно, в данном случае "удаляет" используется в смысле затирает изображение этих кнопок (очищает содержимое окна). Или когда-то раньше она правда удаляла все кнопки автоматически?
Пожалуйста, посмотрите кому не лень.

Re: Баг с кнопками

Posted: Wed Oct 17, 2018 11:49 am
by 0CodErr
Она и удаляет, то есть, после начала перерисовки ты уже не сможешь нажимать на удалённые кнопки, их нужно снова определить\нарисовать.
И делать это при каждой перерисовке, иначе кнопки работать не будут: если их удалили — их уже не существует, реакции на них не будет.

Re: Баг с кнопками

Posted: Wed Oct 17, 2018 12:33 pm
by Leency
Все работает верно.
mcall 12,1 - удаляет все кнопки, в том числе как новосозданную, так и кнопку закрытия окна.

Re: Баг с кнопками

Posted: Wed Oct 17, 2018 8:09 pm
by theonlymirage
Извиняюсь, но тогда у меня новый вопрос (просто я запутался и потерял нить происходящего): почему мы исправляли баг кнопок, принудительно удаляя кнопки через 8 функцию?
Этот код вызывается в цикле отрисовки, между 12.1 и 12.2

Code: Select all

add     edx,0x80000000 ; delete a button
mcall   8              ; before create
sub     edx,0x80000000 ; a new one below
mcall   8,<10,99>
Функция 8 - определить/удалить кнопку.
И после этого, я в своих программах тоже стал добавлять в начале draw:

Code: Select all

;удаляем кнопку, если есть
   mov edx, 0x80000002
   mcall 8
Даже в HACONFIG перед 12.1 зачем-то запихал....
То есть я ошибся, не правильно понял, и можно убрать этот код (код удаления кнопки)? Утечки кнопок не будет?

Re: Баг с кнопками

Posted: Wed Oct 17, 2018 9:05 pm
by Leency
Если нужно удалить все кнопки: mcall 12,1
Если нужно удалить только часть кнопок, а другие оставить: "delete a button".

Не думаю что в HA есть место, где нужно удалять кнопки, потому как они нигде вне mcall12,x не должны создаваться.

Re: Баг с кнопками

Posted: Thu Oct 18, 2018 8:50 pm
by b00bl1k
Заметил, что если нажать кнопку на неактивном окне, то она не перерисовывается и остаётся нажатой.

Re: Баг с кнопками

Posted: Thu Oct 18, 2018 9:09 pm
by 0CodErr
b00bl1k , да есть такое.
Могу лишь сказать, что в одной очень старой сборке #2306 этот баг не проявляется(у меня не получилось повторить).
Возможно, раньше работало правильно, а потом сломалось.

Re: Баг с кнопками

Posted: Thu Oct 18, 2018 10:36 pm
by Leency
0CodErr
Ты перерывал http://builds.kolibrios.org/rus/history/ чтобы найти в какой именно сборке появился баг?

Re: Баг с кнопками

Posted: Thu Oct 18, 2018 10:40 pm
by b00bl1k
До rev6585 нельзя было кликнуть на кнопку неактивного окна. И уже начиная с этой ревизии кнопки ведут себя так же как и сейчас.

Предполагаю, что при нажатии на кнопку неактивного окна сначала рисуется инвертирующая рамка (sys_button_activate_handler), потом окно становится активным и кнопки перерисовываются с нормальной рамкой и потом еще раз рамка инвертируется (sys_button_deactivate_handler). У активного окна между нажатием и отпусканием кнопка не перерисовывается.

Re: Баг с кнопками

Posted: Thu Jan 06, 2022 5:19 pm
by kw33
Всё ещё этот баг с нажатием на кнопку неактивного окна (4-мя постами выше b00bl1k писал).
Возможно ли исправить?