Bug 6074

Summary: Проверить откаченный патч
Product: WINE@Etersoft Reporter: Виталий Перов <vitperov>
Component: Окна / фокус / перерисовкаAssignee: Константин Кондратюк <kondratyuk>
Status: CLOSED FIXED QA Contact: Константин Кондратюк <kondratyuk>
Severity: trivial    
Priority: P5 CC: kondratyuk
Version: 1.1   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 42, 5477, 5618    

Description Виталий Перов 2010-09-27 14:06:01 MSD
Откатил патч:

commit b781c28af7cf2f29b905b1c76a82532eaaa9646b
Author: Konstantin Kondratyuk <kondratyuk@etersoft.ru>
Date:   Fri Apr 9 14:29:24 2010 +0400

    user32: Fix window's sizing

К какой баге относится данное исправление определить не удалось.

Сейчас в wine это место переписано, возможно бага уже исправлена.

Ещё патчи относящиеся к соседним участком кода:
57472d68e93e0d5254fc3c027ee28e05f3e963d8
4d8de1f59013aa7e5f488ed95fee844b830e33ee

Возможно они теперь тоже не требуются
Comment 1 Константин Кондратюк 2010-09-27 14:25:22 MSD
Бага решалась мной для Визардсофта. Видимо, исправил я раньше, чем записал в багзиллу. Кстати, патч отправлялся в winehq, тогда же, в апреле. Его проигнорировали, как обычно.

Заключалась бага в том, что границы MDI-окон при растягивании устанавливались по относительным координатам, а должны устанавливаться по глобальным. Кроме того, граница "тянулась" дальше разрешённого предела.

Точно проявлялось в программе DeliverWIZARD, могу проверить на ней как-нибудь, если не срочно и на другом софте у вас не проявится.
Comment 2 Виталий Перов 2010-09-27 14:29:12 MSD
Спасибо за информацию!

Нет, совсем не срочно.
Comment 3 Константин Кондратюк 2010-09-27 15:46:04 MSD
Насколько я вижу по коду, все 3 патча (все
оформлял и присылал я) не теряют
актуальности.

Что делает эта связка патчей:
1) Обработка mdi-окнами сообщения WM_MOVING (нет в
wwo)
2) Правильная обработка WM_SIZING (в экранных, а
не оконных координатах)
3) Правильная обработка курсора при
растягивании (если курсор вышел за пределы,
установленные для окна, изменение размеров
не вызывается, пока он не вернётся в
"корректную" область)

По-хорошему, эти патчи бы ещё раз заслать в
winehq. Только как на них тесты написать, не
знаю.
Comment 4 Виталий Перов 2010-09-27 17:01:48 MSD
Переделал патч. Приложил в eterwine.
Требуется проверить.
Comment 5 Виталий Перов 2010-09-27 17:12:49 MSD
Дополнительная информация:
[17:06:22] <Konstantin Kondratyuk> Смысл в том, что при изменении размеров окна программа может реагировать на это изменение. Типа "нее, ни фига, я дальше не буду двигать границу окна, мне программист написал, что меньше 200 пикселей окно быть не может"
Это делается с помощью SC_SIZE, SC_MOVE и ещё каких-то уведомлений
А в этом коде рисуется рамка и само окно (потом), с учётом того, что позволяет программа
Не рисуется, а считается
Comment 6 Константин Кондратюк 2010-09-27 17:16:53 MSD
Вот, я понял, как уточнить, что делается в исправляемом куске кода!

http://msdn.microsoft.com/en-us/library/ms632647(VS.85).aspx

WM_SIZING Message
Sent to a window that the user is resizing. By processing this message, an application can monitor the size and position of the drag rectangle and, if needed, change its size or position.
Comment 7 Константин Кондратюк 2010-11-01 10:30:54 MSK
Патч оставляем в таком виде.
Comment 8 Константин Кондратюк 2011-02-25 11:36:11 MSK
Интересно. Принимаю своё же решение :)