Bug 3794

Summary: Изменились _NET_WM_WINDOW_TYPE в 1.0.9
Product: WINE@Etersoft Reporter: dimbor <aka_down>
Component: Окна / фокус / перерисовкаAssignee: Илья Шпигорь <shpigor>
Status: CLOSED FIXED QA Contact:
Severity: minor    
Priority: P4 CC: boris, lav, vitperov
Version: 1.0.9   
Target Milestone: ---   
Hardware: PC   
OS: Windows   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:

Description dimbor 2009-04-09 16:40:17 MSD
Начиная с 1.0.9, для окон без заголовка  вайном выставляется _NET_WM_WINDOW_TYPE_DIALOG вместо _NET_WM_WINDOW_TYPE_UTILITY.
Создавало проблемы при установке стилей таких окон в рутлес-режиме NXClient for windows. У таких окон, напр форм выбора из списков 1c77, появляется заголовок.
(В оригинальном клиенте от nomachine вообще не анализируются эти стили, т.е. речь идет только о сборках RX@Etersoft.)
Проблему видно в сборках ftp://updates.etersoft.ru/pub/Etersoft/RX@Etersoft/Windows/3.3.0.6/nxclient-3.3.0.6-r11-win32.exe и r12.1 там-же.
На восьмом вайне со стилями в рутлесе все хорошо, начиная с девятого - все окошки overrideRedirect==0 с заголовками.
В более поздних версиях клиента от анализа _NET_WM_WINDOW_TYPE пришлось отказаться. 
Ход мыслей находится по адресу http://unixforum.org/index.php?showtopic=64076&view=findpost&p=819194.
Сейчас установка стилей в новых версиях клиента под виндовс идет через анализ _MOTIF_WM_HINTS - там все правильно.
Только не создаст ли проблем в будущем такое решение?
Comment 1 Илья Шпигорь 2009-04-10 10:53:04 MSD
(In reply to comment #0)
> Начиная с 1.0.9, для окон без заголовка 
> вайном выставляется _NET_WM_WINDOW_TYPE_DIALOG вместо
> _NET_WM_WINDOW_TYPE_UTILITY.

Вернуться назад к типу _NET_WM_WINDOW_TYPE_UTILITY вряд ли возможно. Дело в том, что этот атом определяет не только внешний вид X-ового окна, но и его поведение (например, положение в стэке окон, передачу фокуса ввода). Кроме того, это изменение произошло в оригинальном wine и, возможно, часть кода теперь ориентируется на поведение окна именно со стилем _NET_WM_WINDOW_TYPE_DIALOG.

> Сейчас установка стилей в новых версиях
> клиента под виндовс идет через анализ
> _MOTIF_WM_HINTS - там все правильно.
> Только не создаст ли проблем в будущем
> такое решение?

Насколько я понимаю, _MOTIF_WM_HINTS дополнительный атом, определяющий свойства окна наряду с _NET_WM_WINDOW_TYPE. Вряд ли его использование в wine может измениться в будущем. Вопрос в том, достаточно ли правильно сейчас устанавливаются свойства окна с помощью _MOTIF_WM_HINTS и нет ли каких-либо багов этим вызванных?
Comment 2 dimbor 2009-04-10 16:20:29 MSD
Если в хронологическом порядке, то скорее наоборот.
_MOTIF_WM_HINTS основной, а _NET_WM_WINDOW_TYPE - дополнительный.
После вчитывания в
http://standards.freedesktop.org/wm-spec/latest/
да, действительно, второй заточен больше под определение поведения, чем под оформление. Меня смутило то, что а) изначально _MOTIF_WM_HINTS в nx-клиент не попадал, б) только я что-то сделал, как оно все поменялось.
А с _MOTIF_WM_HINTS все просто: есть бит заголовка - ставим стиль с заголовком, ... и т.д.
Спасибо за информацию, этот вопрос можно закрыть.