Page 2 of 2

Re: Неправильное состояние кнопок мыши при щелчке по заголовку

Posted: Mon Sep 24, 2018 3:28 pm
by theonlymirage
Pathoswithin wrote: Какая мотивация? В идеале, что баг большой, страшный, и если его не победить, то он нас всех сожрёт. У нас тут куча мелких багов, на которые всем насрать. Да, и мне тоже; себя мотивировать так же непросто.
По ходу дела эти баги нас всех заклюют, а не сожрут! :) И слева нас рать, и справа нас рать, Колибри рано ещё помирать.

Re: Неправильное состояние кнопок мыши при щелчке по заголовку

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

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

Re: Неправильное состояние кнопок мыши при щелчке по заголовку

Posted: Tue Sep 25, 2018 5:44 pm
by Leency
theonlymirage wrote:
theonlymirage wrote: Багов с подобным механизмом много (имею в виду особый механизм обработки мыши в заголовке и кнопок заголовка), например:
Запускаем калькулятор. Ставим его окно рядом с доком, но желательно не вплотную. Нажимаем по заголовку окна калькулятора правой кнопкой мыши, чтобы окно сжалось в заголовок. Нажимаем кнопку свернуть в заголовке окна калькулятора. Наводим курсор мыши на док, док появляется. Отводим мышь обратно на то место, где был калькулятор: док исчезает, а сжатое в заголовок окно калькулятора появляется на экране (напомню, мы его свернули и явно не раскрывали). Теперь развернуть окно калькулятора почти никак нельзя, только перезапускать.
С Tinypad в этом случае ещё хуже. Зато у EOLite всё ок, он принудительно разворачивает своё окно.
Видео по описанному багу с зависанием системы при выключении/перезагрузке системы (последнее воспроизводится редко, точная суть явления зависания не выяснена).
Это действие каким-то образом меняет HEIGHT и CLIENT_HEIGHT у окон.

Re: Неправильное состояние кнопок мыши при щелчке по заголовку

Posted: Tue Sep 25, 2018 5:52 pm
by theonlymirage
То, что меняет размер это ожидаемо. Я ошибался, когда считал, что окно нужно подносить к доку и потом курсор обратно вести на область окна. Не нужно. Просто откройте любое окно, сверните его, наведите курсор на док и верните мышь поверх рабочего стола. Свёрнутое окно появится само.
Так воспроизвести баг значительно проще!

Возможно, в этом участке кода и меняется размер нашего активного окошка (но судя по коду, здесь изменение своего окна):

Code: Select all

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

Re: Неправильное состояние кнопок мыши при щелчке по заголовку

Posted: Tue Sep 25, 2018 6:19 pm
by 0CodErr
Leency wrote:Это действие каким-то образом меняет HEIGHT и CLIENT_HEIGHT у окон.
4294967294 = 0xfffffffe = -2
И об этом уже сообщалось.
Вот в этом чате http://board.kolibrios.org/chatlogs/cha ... 03-25.html
1.png
1.png (8.91 KiB)
Viewed 5311 times

Re: Неправильное состояние кнопок мыши при щелчке по заголовку

Posted: Wed Sep 26, 2018 11:21 am
by theonlymirage
В коде, что я скинул выше, закомментировал строчку:

Code: Select all

;mcall   18, 3, [win.psid]
Баг пропал и не проявляется. Значит здесь мы имеем два бага и похоже оба в системных функциях.

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