Откатил патч: 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 Возможно они теперь тоже не требуются
Бага решалась мной для Визардсофта. Видимо, исправил я раньше, чем записал в багзиллу. Кстати, патч отправлялся в winehq, тогда же, в апреле. Его проигнорировали, как обычно. Заключалась бага в том, что границы MDI-окон при растягивании устанавливались по относительным координатам, а должны устанавливаться по глобальным. Кроме того, граница "тянулась" дальше разрешённого предела. Точно проявлялось в программе DeliverWIZARD, могу проверить на ней как-нибудь, если не срочно и на другом софте у вас не проявится.
Спасибо за информацию! Нет, совсем не срочно.
Насколько я вижу по коду, все 3 патча (все оформлял и присылал я) не теряют актуальности. Что делает эта связка патчей: 1) Обработка mdi-окнами сообщения WM_MOVING (нет в wwo) 2) Правильная обработка WM_SIZING (в экранных, а не оконных координатах) 3) Правильная обработка курсора при растягивании (если курсор вышел за пределы, установленные для окна, изменение размеров не вызывается, пока он не вернётся в "корректную" область) По-хорошему, эти патчи бы ещё раз заслать в winehq. Только как на них тесты написать, не знаю.
Переделал патч. Приложил в eterwine. Требуется проверить.
Дополнительная информация: [17:06:22] <Konstantin Kondratyuk> Смысл в том, что при изменении размеров окна программа может реагировать на это изменение. Типа "нее, ни фига, я дальше не буду двигать границу окна, мне программист написал, что меньше 200 пикселей окно быть не может" Это делается с помощью SC_SIZE, SC_MOVE и ещё каких-то уведомлений А в этом коде рисуется рамка и само окно (потом), с учётом того, что позволяет программа Не рисуется, а считается
Вот, я понял, как уточнить, что делается в исправляемом куске кода! 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.
Патч оставляем в таком виде.
Интересно. Принимаю своё же решение :)