Board.KolibriOS.org
http://board.kolibrios.org/

Неправильное состояние кнопок мыши при щелчке по заголовку
http://board.kolibrios.org/viewtopic.php?f=1&t=3761
Page 2 of 2

Author:  theonlymirage [ Mon Sep 24, 2018 3:28 pm ]
Post subject:  Re: Неправильное состояние кнопок мыши при щелчке по заголовку

Pathoswithin wrote:
Какая мотивация? В идеале, что баг большой, страшный, и если его не победить, то он нас всех сожрёт. У нас тут куча мелких багов, на которые всем насрать. Да, и мне тоже; себя мотивировать так же непросто.

По ходу дела эти баги нас всех заклюют, а не сожрут! :) И слева нас рать, и справа нас рать, Колибри рано ещё помирать.

Author:  theonlymirage [ Tue Sep 25, 2018 5:23 pm ]
Post subject:  Re: Неправильное состояние кнопок мыши при щелчке по заголовку

theonlymirage wrote:
Багов с подобным механизмом много (имею в виду особый механизм обработки мыши в заголовке и кнопок заголовка), например:
Запускаем калькулятор. Ставим его окно рядом с доком, но желательно не вплотную. Нажимаем по заголовку окна калькулятора правой кнопкой мыши, чтобы окно сжалось в заголовок. Нажимаем кнопку свернуть в заголовке окна калькулятора. Наводим курсор мыши на док, док появляется. Отводим мышь обратно на то место, где был калькулятор: док исчезает, а сжатое в заголовок окно калькулятора появляется на экране (напомню, мы его свернули и явно не раскрывали). Теперь развернуть окно калькулятора почти никак нельзя, только перезапускать.
С Tinypad в этом случае ещё хуже. Зато у EOLite всё ок, он принудительно разворачивает своё окно.



Видео по описанному багу с зависанием системы при выключении/перезагрузке системы (последнее воспроизводится редко, точная суть явления зависания не выяснена).

Author:  Leency [ Tue Sep 25, 2018 5:44 pm ]
Post subject:  Re: Неправильное состояние кнопок мыши при щелчке по заголовку

theonlymirage wrote:
theonlymirage wrote:
Багов с подобным механизмом много (имею в виду особый механизм обработки мыши в заголовке и кнопок заголовка), например:
Запускаем калькулятор. Ставим его окно рядом с доком, но желательно не вплотную. Нажимаем по заголовку окна калькулятора правой кнопкой мыши, чтобы окно сжалось в заголовок. Нажимаем кнопку свернуть в заголовке окна калькулятора. Наводим курсор мыши на док, док появляется. Отводим мышь обратно на то место, где был калькулятор: док исчезает, а сжатое в заголовок окно калькулятора появляется на экране (напомню, мы его свернули и явно не раскрывали). Теперь развернуть окно калькулятора почти никак нельзя, только перезапускать.
С Tinypad в этом случае ещё хуже. Зато у EOLite всё ок, он принудительно разворачивает своё окно.

Видео по описанному багу с зависанием системы при выключении/перезагрузке системы (последнее воспроизводится редко, точная суть явления зависания не выяснена).

Это действие каким-то образом меняет HEIGHT и CLIENT_HEIGHT у окон.

Attachments:
bug.png
bug.png [ 69.94 KiB | Viewed 1220 times ]

Author:  theonlymirage [ Tue Sep 25, 2018 5:52 pm ]
Post subject:  Re: Неправильное состояние кнопок мыши при щелчке по заголовку

То, что меняет размер это ожидаемо. Я ошибался, когда считал, что окно нужно подносить к доку и потом курсор обратно вести на область окна. Не нужно. Просто откройте любое окно, сверните его, наведите курсор на док и верните мышь поверх рабочего стола. Свёрнутое окно появится само.
Так воспроизвести баг значительно проще!

Возможно, в этом участке кода и меняется размер нашего активного окошка (но судя по коду, здесь изменение своего окна):
Code:
wnd_hide:
    cmp     byte[win.state], 0
    je      main_loop
 
    mov     byte[nwin.close], 1
 
    mcall   18, 3, [win.psid]
 
    mov     byte[win.state], 0
    mov     byte[win.button_index], -1
 
    cmp     byte[dock_items.ashow],1
    je     .do_no_hide
 
    mov     eax, [win.width_hdn]
    mov     [win.width], eax
 
    mov     eax, [win.x_hdn]
    mov     [win.x], eax
 
    mov     eax, [win.height_hdn]
    mov     [win.height], eax
 
    mov     eax, [win.y_hdn]
    mov     [win.y], eax
 
    mcall   67, [win.x], [win.y], [win.width], [win.height]
 

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

Author:  0CodErr [ Tue Sep 25, 2018 6:19 pm ]
Post subject:  Re: Неправильное состояние кнопок мыши при щелчке по заголовку

Leency wrote:
Это действие каким-то образом меняет HEIGHT и CLIENT_HEIGHT у окон.
4294967294 = 0xfffffffe = -2
И об этом уже сообщалось.
Вот в этом чате chatlogs/chatlog2014-03-25.html
Attachment:
1.png
1.png [ 8.91 KiB | Viewed 1205 times ]

Author:  theonlymirage [ Wed Sep 26, 2018 11:21 am ]
Post subject:  Re: Неправильное состояние кнопок мыши при щелчке по заголовку

В коде, что я скинул выше, закомментировал строчку:
Code:
;mcall   18, 3, [win.psid]

Баг пропал и не проявляется. Значит здесь мы имеем два бага и похоже оба в системных функциях.

Первый при сворачивании активного окна оставляет поток активным, а второй - функция сделать окно потока активным портит структуру потока (размеры окна, если окно было сжато или свёрнуто).
Вероятно можно сделать кривой fix внутри самого @DOCKY: перед вызовом функции 18 проверить свёрнуто ли сейчас окно потока или нет, если свёрнуто (или сжато в заголовок), то не делать этот вызов.

Page 2 of 2 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/