Обобщая предыдущую переписку по этому вопросу: В режиме 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-порядка окон (переключение окон при развернутом списке) и ощутимые неудобства. Попытка компенсировать сделана, но не факт, что при обновлении вайна все будет работать также. Т.к. тоже чистое шаманство по косвенным признакам. А наличие свойства версии, пусть даже пустого, позволит такие списки отлавливать и держать наверху.
Created attachment 1182 [details] [PATCH 1/2] Патч #1
Created attachment 1183 [details] [PATCH 2/2] Патч #2
Приложил к баге патчи. Устроит ли такое решение? Эти стили можно получить так: 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 ));