На текущем eterhack криво отрисовываются (или вообще не отрисовываются) рамки и заголовки у вложенных окон в 1С7.7. Воспроизвести можно, например, так. После входа в базу закрываем все окна, Файл -> Новый -> Текст
У меня вроде всё нормально отрисовалось. Подожду Сашу, всё проверим.
В моей бутылке 1c77-test работает нормально. Вот что написал мне Илья: Когда ты создавал бутылку командой swine -c, то использовался системный wine, который стоит на cellar. (Его версия wine-etersoft-1.0.12-alt7.34, т.е. тоже 1.0.12.) Сейчас проверю ещё кое-что, возможно что бага решиться после wine --update до версии eterhack.
Окна всё-равно не отрисовываются..
Нашел причину ошибки. В функции NC_DoNCPaint не выполняется условие: if( IntersectRect( &rfuzz, &r, &rectClip ) ) NC_DrawCaption(hdc, &r, hwnd, dwStyle, dwExStyle, active); где r - это RECT всего окна rectClip - это RECT клиентской области окна. Почему они не перекрываются не ясно.
Сделал временный хак: Hack for mdi window border in 1c7 (eterbug #6063) Когда будет время его надо откатить и сделать по-нормальному. Сейчас он заставляет игнорировать в NC_DoNCPaint переданный RGN clip, т.е перерисовывается вся рамку целиком, даже если была перекрыта только ее часть.
Приложил хак в ветку eterhack.
wine-etersoft-1.3.9-alt1.2 wine-etersoft-school-1.7.0-alt1 Принято.
Небольшая проблема с рамками есть и с упомянутым выше хаком. На рамке окна "Текст" остаются следы окон, которые располагались поверх рамки.
Created attachment 2079 [details] Следы других окон на рамке окна "Текст1"
Если откатить user32 и winex11.drv до состояния оригинального wine, то отрисовывается только не клиентская область mdi окна (заголовок и системное меню). При откате winex11.drv - бага воспроизводится в неизменном виде. При откате user32 - mdi окно вообще не отрисовывается пока не получит фокус.
Откатил wineserver до состояния оригинального wine. Бага перестала воспроизводится. Есть подозрения, что wineserver хранит вместо размера окна размер его клиентской области.
Похоже сломалось одним из патчей на #2605. Патч на wineserver остался, а на winex11.dv был откачен.
(В ответ на comment #12) > Патч на wineserver остался, а на winex11.dv был откачен. Это утверждение не верно. Все патчи более-менее целы (что-то накладывалось поверх них). Сейчас бага 2605 решена в eterhack, но похоже проблемы с mdi окнами в 1с7 - побочный эффект, который в свое время не заметили. Необходимо доделать патчи на 2605 так, чтобы они ничего не ломали.
(В ответ на comment #8) > Небольшая проблема с рамками есть и с упомянутым выше хаком. На рамке окна > "Текст" остаются следы окон, которые располагались поверх рамки. Если откатить патчи на 2605, то эта проблема остается. Похоже ее причина в чем-то другом.
Исправил патч на 2605, отправил в рассылку. Теперь перерисовывается и nonclient. Бага о которой говорил Саша еще осталась.
Нашел причину ошибки - это кусок старого патча, который стал не нужен из-за изменений в оригинальном wine. Реверт отправил в рассылку. Думаю на этом багу можно считать исправленной.
Проблема озвученная Сашей еще с нами. Илья, проверь пожалуйста что реверт приложен. wine-etersoft-1.3.10-alt1.1 wine-etersoft-school-1.7.0-alt3
> Проблема озвученная Сашей еще с нами. Илья, проверь пожалуйста что реверт > приложен. Насколько я понял, приложен к 1.3.10-alt1.2
Коммит называется: commit 538bdd52375d64f12e3a7eb4dd3f4a31523164d1 Author: Ilya Shpigor <shpigor@etersoft.ru> Date: Tue Dec 28 15:25:04 2010 +0300 Revert hunk of "user32/winex11.drv: Using the Drop/Raise window functions for all aplications (eterbug #3768)" Приложен в 1.3.10-alt1.2.
Принято. wine-etersoft-school-1.7.0-alt4 wine-etersoft-1.7.0-alt1