Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Aug 20, 2019 2:32 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 25 posts ]  Go to page Previous 1 2
Author Message
PostPosted: Wed Sep 12, 2018 12:13 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
Залил #7354

_________________
Через тернии к звездам


Top
   
PostPosted: Wed Oct 17, 2018 2:45 am 
Offline

Joined: Sat Apr 22, 2017 6:11 pm
Posts: 222
Сижу я тут с документацией, читаю, а там:
Code:
Функция 12 - начать/закончить перерисовку окна. 
Подфункция 1 - начать перерисовку окна.
Подфункция 2 - закончить перерисовку окна.
Замечания:
  * Функция начала перерисовки удаляет все определённые
    функцией 8 кнопки, их следует определить повторно.


Обновляем документацию? Вероятно, в данном случае "удаляет" используется в смысле затирает изображение этих кнопок (очищает содержимое окна). Или когда-то раньше она правда удаляла все кнопки автоматически?
Пожалуйста, посмотрите кому не лень.


Top
   
PostPosted: Wed Oct 17, 2018 11:49 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Она и удаляет, то есть, после начала перерисовки ты уже не сможешь нажимать на удалённые кнопки, их нужно снова определить\нарисовать.
И делать это при каждой перерисовке, иначе кнопки работать не будут: если их удалили — их уже не существует, реакции на них не будет.


Top
   
PostPosted: Wed Oct 17, 2018 12:33 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
Все работает верно.
mcall 12,1 - удаляет все кнопки, в том числе как новосозданную, так и кнопку закрытия окна.


Attachments:
btn.png
btn.png [ 3.67 KiB | Viewed 717 times ]

_________________
Через тернии к звездам
Top
   
PostPosted: Wed Oct 17, 2018 8:09 pm 
Offline

Joined: Sat Apr 22, 2017 6:11 pm
Posts: 222
Извиняюсь, но тогда у меня новый вопрос (просто я запутался и потерял нить происходящего): почему мы исправляли баг кнопок, принудительно удаляя кнопки через 8 функцию?
Этот код вызывается в цикле отрисовки, между 12.1 и 12.2
Code:
add     edx,0x80000000 ; delete a button
mcall   8              ; before create
sub     edx,0x80000000 ; a new one below
mcall   8,<10,99>

Функция 8 - определить/удалить кнопку.
И после этого, я в своих программах тоже стал добавлять в начале draw:
Code:
;удаляем кнопку, если есть
   mov edx, 0x80000002
   mcall 8

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


Top
   
PostPosted: Wed Oct 17, 2018 9:05 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
Если нужно удалить все кнопки: mcall 12,1
Если нужно удалить только часть кнопок, а другие оставить: "delete a button".

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

_________________
Через тернии к звездам


Top
   
PostPosted: Thu Oct 18, 2018 8:50 pm 
Offline

Joined: Tue Jun 24, 2008 11:12 pm
Posts: 64
Заметил, что если нажать кнопку на неактивном окне, то она не перерисовывается и остаётся нажатой.


Top
   
PostPosted: Thu Oct 18, 2018 9:09 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
b00bl1k , да есть такое.
Могу лишь сказать, что в одной очень старой сборке #2306 этот баг не проявляется(у меня не получилось повторить).
Возможно, раньше работало правильно, а потом сломалось.


Top
   
PostPosted: Thu Oct 18, 2018 10:36 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
0CodErr
Ты перерывал http://builds.kolibrios.org/rus/history/ чтобы найти в какой именно сборке появился баг?

_________________
Через тернии к звездам


Top
   
PostPosted: Thu Oct 18, 2018 10:40 pm 
Offline

Joined: Tue Jun 24, 2008 11:12 pm
Posts: 64
До rev6585 нельзя было кликнуть на кнопку неактивного окна. И уже начиная с этой ревизии кнопки ведут себя так же как и сейчас.

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 25 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited