Bug 6063

Summary: Проблема с отрисовкой рамок у MDI (вложенных) окон в 1С 7.7
Product: WINE@Etersoft Reporter: Александр Морозов <amorozov>
Component: Окна / фокус / перерисовкаAssignee: Илья Шпигорь <shpigor>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: minor    
Priority: P3 CC: lav
Version: 2.0   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 2605    
Bug Blocks: 760, 42, 6433    
Attachments: Следы других окон на рамке окна "Текст1"

Description Александр Морозов 2010-09-24 15:11:07 MSD
На текущем eterhack криво отрисовываются (или вообще не отрисовываются) рамки и заголовки у вложенных окон в 1С7.7.
Воспроизвести можно, например, так. После входа в базу закрываем все окна, Файл -> Новый -> Текст
Comment 1 Павел Турчинский 2010-12-21 12:03:36 MSK
У меня вроде всё нормально отрисовалось. Подожду Сашу, всё проверим.
Comment 2 Павел Турчинский 2010-12-21 14:08:46 MSK
В моей бутылке 1c77-test работает нормально. Вот что написал мне Илья: 
Когда ты создавал бутылку командой swine -c, то использовался системный wine, который стоит на cellar.
(Его версия wine-etersoft-1.0.12-alt7.34, т.е. тоже 1.0.12.) 

Сейчас проверю ещё кое-что, возможно что бага решиться после wine --update до версии eterhack.
Comment 3 Павел Турчинский 2010-12-21 15:54:32 MSK
Окна всё-равно не отрисовываются..
Comment 4 Илья Шпигорь 2010-12-22 17:23:08 MSK
Нашел причину ошибки.

В функции NC_DoNCPaint не выполняется условие:

if( IntersectRect( &rfuzz, &r, &rectClip ) )
    NC_DrawCaption(hdc, &r, hwnd, dwStyle, dwExStyle, active);

где r - это RECT всего окна
rectClip - это RECT клиентской области окна.

Почему они не перекрываются не ясно.
Comment 5 Илья Шпигорь 2010-12-22 18:10:51 MSK
Сделал временный хак:

Hack for mdi window border in 1c7 (eterbug #6063)

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

Сейчас он заставляет игнорировать в NC_DoNCPaint переданный RGN clip, т.е перерисовывается вся рамку целиком, даже если была перекрыта только ее часть.
Comment 6 Илья Шпигорь 2010-12-22 18:14:45 MSK
Приложил хак в ветку eterhack.
Comment 7 Денис Баранов 2010-12-22 21:02:35 MSK
wine-etersoft-1.3.9-alt1.2
wine-etersoft-school-1.7.0-alt1

Принято.
Comment 8 Александр Морозов 2010-12-23 15:53:06 MSK
Небольшая проблема с рамками есть и с упомянутым выше хаком. На рамке окна "Текст" остаются следы окон, которые располагались поверх рамки.
Comment 9 Александр Морозов 2010-12-23 15:54:10 MSK
Created attachment 2079 [details]
Следы других окон на рамке окна "Текст1"
Comment 10 Илья Шпигорь 2010-12-27 16:33:59 MSK
Если откатить user32 и winex11.drv до состояния оригинального wine, то отрисовывается только не клиентская область mdi окна (заголовок и системное меню).

При откате winex11.drv - бага воспроизводится в неизменном виде.

При откате user32 - mdi окно вообще не отрисовывается пока не получит фокус.
Comment 11 Илья Шпигорь 2010-12-27 17:05:32 MSK
Откатил wineserver до состояния оригинального wine. 

Бага перестала воспроизводится.
Есть подозрения, что wineserver хранит вместо размера окна размер его клиентской области.
Comment 12 Илья Шпигорь 2010-12-27 17:15:26 MSK
Похоже сломалось одним из патчей на #2605.

Патч на wineserver остался, а на winex11.dv был откачен.
Comment 13 Илья Шпигорь 2010-12-27 17:46:22 MSK
(В ответ на comment #12)
> Патч на wineserver остался, а на winex11.dv был откачен.

Это утверждение не верно. Все патчи более-менее целы (что-то накладывалось поверх них).

Сейчас бага 2605 решена в eterhack, но похоже проблемы с mdi окнами в 1с7 - побочный эффект, который в свое время не заметили.

Необходимо доделать патчи на 2605 так, чтобы они ничего не ломали.
Comment 14 Илья Шпигорь 2010-12-27 17:47:10 MSK
(В ответ на comment #8)
> Небольшая проблема с рамками есть и с упомянутым выше хаком. На рамке окна
> "Текст" остаются следы окон, которые располагались поверх рамки.

Если откатить патчи на 2605, то эта проблема остается.
Похоже ее причина в чем-то другом.
Comment 15 Илья Шпигорь 2010-12-28 11:51:24 MSK
Исправил патч на 2605, отправил в рассылку.

Теперь перерисовывается и nonclient.
Бага о которой говорил Саша еще осталась.
Comment 16 Илья Шпигорь 2010-12-28 15:30:06 MSK
Нашел причину ошибки - это кусок старого патча, который стал не нужен из-за изменений в оригинальном wine.

Реверт отправил в рассылку.

Думаю на этом багу можно считать исправленной.
Comment 17 Денис Баранов 2010-12-28 18:08:24 MSK
Проблема озвученная Сашей еще с нами. Илья, проверь пожалуйста что реверт приложен.
wine-etersoft-1.3.10-alt1.1
wine-etersoft-school-1.7.0-alt3
Comment 18 Александр Морозов 2010-12-28 20:15:40 MSK
> Проблема озвученная Сашей еще с нами. Илья, проверь пожалуйста что реверт
> приложен.
Насколько я понял, приложен к 1.3.10-alt1.2
Comment 19 Илья Шпигорь 2010-12-29 11:08:23 MSK
Коммит называется:

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.
Comment 20 Денис Баранов 2011-01-03 19:17:53 MSK
Принято.
wine-etersoft-school-1.7.0-alt4
wine-etersoft-1.7.0-alt1