Есть ряд очень полезных программ которые запускают базы 1с в удобном виде. Но у всех этих программ под вайном есть одна общая проблема - при смене рабочего стола изображение внутри окна теряется и приходится закрывать программу и открывать заново. Пример такой программы: /var/ftp/pvt/Windows/Testing/RT/10420/1cstarter.zip Бутылка: rt/10420 Проблема поддтвердилась. Грешил на compiz, но с metacity анологично.
Проблема в дефолтных Delphi приложениях не проявляется. Очевидно ошибка связана с обработкой сообщения WM_PAINT приложением. Необходимо выяснить какие именно действия происходят при отрисовке. Отправил письмо автору Starter 1C с просьбой это прояснить.
Ломающий перерисовку коммит в оригинальном wine: 5785ee08d06db70d3e187cf31add2739b3a36b9e is first bad commit commit 5785ee08d06db70d3e187cf31add2739b3a36b9e Author: Alexandre Julliard <julliard@winehq.org> Date: Fri Feb 29 13:43:13 2008 +0100 winex11: Avoid accessing the internals of the window structure in the Map/UnmapNotify handlers. :040000 040000 2d868c84b12db5b1d781d4c12fccb435dab918b3 4fc6933ecbd26a7d0fa9ebfd3c9c8464862818b4 M dlls
Выложил группу патчей. Как известно, Delphi приложения ведут себя при сворачивании очень хитро. У всех программ на Delphi есть окно класса TApplication (название по умолчанию). При запуске приложения - активируется одна из так называемых форм (окно класса TForm). На таскбаре появляется только эта форма. При сворачивании формы происходит несколько действий: 1) форма становится не видимой (перестает отображаться на таскбаре) 2) окно TApplication становится видимым и сворачивается (его как раз мы и видим на таскбаре вместо формы) После разворачивания окна все с точностью до наоборот: 1) TApplication становится не видимым 2) TForm снова показывается В результате этих манипуляций в wine TApplication остается видимым (см. багу #3092). При текущем решении этой проблемы (замены посылки WM_SYSCOMMAND на ShowWindow) изменются сообщения посылаемые TApplication и TForm (их становится меньше). Окно TApplication больше не становится видимым, но после сворачивания и разворачивания окна TForm в некоторых приложениях оно перестает перерисовываться. Решение заключается в откате патча на #3092 и хаке, который запрещает SetWindowPos для окон класса TApplication (этот класс может быть переименован, но во всех тестовых Delphi приложениях он есть) и блокирует попытки сделать невидимым окно TForm. Это приводит к тому, что TForm ведет себя как обычное виндовое окно, а TApplication вообще никогда не становится видимым. В не managed режиме этот хак ломает сворачивание, поэтому была добавлена функция X11DRV_IsWindowManaged - для проверки, находится ли окно в managed режиме.
Принято. WINE@Etersoft eter26/eter19
Откатил патч: commit 987c657c359c40ef927b8ce879bff82ac765cd94 Author: Ilya Shpigor <shpigor@etersoft.ru> Date: Thu Jul 9 16:30:12 2009 +0400 user32: Don't hide the TForm windows on minimizing in Delphi applications (eterbug #3995) Проблема при компиляции: winpos.c: In function ‘SetWindowPos’: winpos.c:2063: error: ‘USER_DRIVER’ has no member named ‘pIsWindowManaged’
Не воспроизводится. Бутылка: 1c/starter WINE@Etersoft 1.0 SQL 1.3.27/1.7.1-eter1.12/3
принято