Bug 3913

Summary: Новое свойство(а) окон для старых WM (NXClient for Windows) - версия вайна, различение MDI окон.
Product: WINE@Etersoft Reporter: dimbor <aka_down>
Component: Окна / фокус / перерисовкаAssignee: Илья Шпигорь <shpigor>
Status: CLOSED FIXED QA Contact:
Severity: enhancement    
Priority: P5 CC: boris, lav
Version: 1.0.10   
Target Milestone: ---   
Hardware: PC   
OS: Windows   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Attachments: [PATCH 1/2]
[PATCH 2/2]

Description dimbor 2009-05-06 02:44:48 MSD
Обобщая предыдущую переписку по этому вопросу:
  В режиме rootless nx-клиента (Windows), для некоторых MDI окон вайна создаются отдельные X-окна. Например "Календарь", "Калькулятор", "Удаление помеченных объектов" в 1с77. Задание их стиля оформления проблем не вызывает - однозначно определяется пустым decoration из _MOTIF_WM_HINTS. Имеется проблема установки им modeless. Сейчас их идентификация проводится по наличию непустого _NET_WM_NAME при пустом decoration. Передача в каком-нибудь свойстве dwStyle&dwExStyle (WS_EX_MDICHILD) действительно упростит их однозначное определение.
 Версию же вайна прошу для _всех_ окон по двум причинам:
Первая - особенности технологии nx заставляют для удобства перетаскивания MDI окон делать им fake-заголовок и перехватывать начало/конец перетаскивания. Этот фокус работает с MDI 1.0.9/10, но сбоит под 1.0.8. Универсально решить не получается, поэтому сейчас на RX выкладываются две версии клиента (тек. 13.5, 13.6)
Вторая - отсутствие свойства WM_TRANSIENT_FOR у списков: выбора режима в окне запуска 1с, выбора пользователя ИБ, принтера ..etc. Это вызывает нарушение z-порядка окон (переключение окон при развернутом списке) и ощутимые неудобства.
Попытка компенсировать сделана, но не факт, что при обновлении вайна все будет работать также. Т.к. тоже чистое шаманство по косвенным признакам. А наличие свойства версии, пусть даже пустого, позволит такие списки отлавливать и держать наверху.
Comment 1 Илья Шпигорь 2009-05-14 14:55:43 MSD
Created attachment 1182 [details]
[PATCH 1/2]

Патч #1
Comment 2 Илья Шпигорь 2009-05-14 14:56:16 MSD
Created attachment 1183 [details]
[PATCH 2/2]

Патч #2
Comment 3 Илья Шпигорь 2009-05-14 15:06:00 MSD
Приложил к баге патчи. Устроит ли такое решение?

Эти стили можно получить так:

1) Style/exStyle

LONG *info;
...
XGetWindowProperty( display, data->whole_window, XInternAtom(display, "WM_WINE_STYLE", True), 0, sizeof(LONG), False, AnyPropertyType, &type, &format, &count, &remaining, (unsigned char **)&info );

2) версия wine

char *ver;
...
XGetWindowProperty( display, data->whole_window, XInternAtom(display, "WM_WINE_VER", True), 0, 16, False, AnyPropertyType, &type, &format, &count, &remaining, (unsigned char **)&ver ));