Баг с кнопками
-
Залил #7354Из хаоса в космос
Сижу я тут с документацией, читаю, а там:
Обновляем документацию? Вероятно, в данном случае "удаляет" используется в смысле затирает изображение этих кнопок (очищает содержимое окна). Или когда-то раньше она правда удаляла все кнопки автоматически?
Пожалуйста, посмотрите кому не лень.
Code: Select all
Функция 12 - начать/закончить перерисовку окна.
Подфункция 1 - начать перерисовку окна.
Подфункция 2 - закончить перерисовку окна.
Замечания:
* Функция начала перерисовки удаляет все определённые
функцией 8 кнопки, их следует определить повторно.
Пожалуйста, посмотрите кому не лень.
Она и удаляет, то есть, после начала перерисовки ты уже не сможешь нажимать на удалённые кнопки, их нужно снова определить\нарисовать.
И делать это при каждой перерисовке, иначе кнопки работать не будут: если их удалили — их уже не существует, реакции на них не будет.
И делать это при каждой перерисовке, иначе кнопки работать не будут: если их удалили — их уже не существует, реакции на них не будет.
Все работает верно.
mcall 12,1 - удаляет все кнопки, в том числе как новосозданную, так и кнопку закрытия окна.
mcall 12,1 - удаляет все кнопки, в том числе как новосозданную, так и кнопку закрытия окна.
- Attachments
-
-
btn.png (3.67 KiB)Viewed 8661 times
-
Из хаоса в космос
Извиняюсь, но тогда у меня новый вопрос (просто я запутался и потерял нить происходящего): почему мы исправляли баг кнопок, принудительно удаляя кнопки через 8 функцию?
Этот код вызывается в цикле отрисовки, между 12.1 и 12.2
Функция 8 - определить/удалить кнопку.
И после этого, я в своих программах тоже стал добавлять в начале draw:
Даже в HACONFIG перед 12.1 зачем-то запихал....
То есть я ошибся, не правильно понял, и можно убрать этот код (код удаления кнопки)? Утечки кнопок не будет?
Этот код вызывается в цикле отрисовки, между 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>
И после этого, я в своих программах тоже стал добавлять в начале draw:
Code: Select all
;удаляем кнопку, если есть
mov edx, 0x80000002
mcall 8
То есть я ошибся, не правильно понял, и можно убрать этот код (код удаления кнопки)? Утечки кнопок не будет?
Если нужно удалить все кнопки: mcall 12,1
Если нужно удалить только часть кнопок, а другие оставить: "delete a button".
Не думаю что в HA есть место, где нужно удалять кнопки, потому как они нигде вне mcall12,x не должны создаваться.
Если нужно удалить только часть кнопок, а другие оставить: "delete a button".
Не думаю что в HA есть место, где нужно удалять кнопки, потому как они нигде вне mcall12,x не должны создаваться.
Из хаоса в космос
Заметил, что если нажать кнопку на неактивном окне, то она не перерисовывается и остаётся нажатой.
b00bl1k , да есть такое.
Могу лишь сказать, что в одной очень старой сборке #2306 этот баг не проявляется(у меня не получилось повторить).
Возможно, раньше работало правильно, а потом сломалось.
Могу лишь сказать, что в одной очень старой сборке #2306 этот баг не проявляется(у меня не получилось повторить).
Возможно, раньше работало правильно, а потом сломалось.
0CodErr
Ты перерывал http://builds.kolibrios.org/rus/history/ чтобы найти в какой именно сборке появился баг?
Ты перерывал http://builds.kolibrios.org/rus/history/ чтобы найти в какой именно сборке появился баг?
Из хаоса в космос
До rev6585 нельзя было кликнуть на кнопку неактивного окна. И уже начиная с этой ревизии кнопки ведут себя так же как и сейчас.
Предполагаю, что при нажатии на кнопку неактивного окна сначала рисуется инвертирующая рамка (sys_button_activate_handler), потом окно становится активным и кнопки перерисовываются с нормальной рамкой и потом еще раз рамка инвертируется (sys_button_deactivate_handler). У активного окна между нажатием и отпусканием кнопка не перерисовывается.
Предполагаю, что при нажатии на кнопку неактивного окна сначала рисуется инвертирующая рамка (sys_button_activate_handler), потом окно становится активным и кнопки перерисовываются с нормальной рамкой и потом еще раз рамка инвертируется (sys_button_deactivate_handler). У активного окна между нажатием и отпусканием кнопка не перерисовывается.
Всё ещё этот баг с нажатием на кнопку неактивного окна (4-мя постами выше b00bl1k писал).
Возможно ли исправить?
Возможно ли исправить?
Who is online
Users browsing this forum: No registered users and 2 guests