Bug 729

Summary: Меню в 1С 8.0
Product: WINE@Etersoft Reporter: Константин Кондратюк <kondratyuk>
Component: Графика GDI / DIB / GDIPLUSAssignee: Анатолий Лютин <vostok>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P5 CC: baraka, lav
Version: 1.0.8   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 437, 150, 766, 777, 2808, 7468    

Description Константин Кондратюк 2007-08-31 15:05:20 MSD
Сборка 20070830.
Меню в 1С 8.0 живёт своей жизнью. При переключении окна 1С на другое, оно остаётся на экране, его пункты активны и работают. 
Также при перемещении курсора на соседнюю позицию (в строке главного меню) меню закрывается. Для того, чтобы открыть пункт, нужно нажать ещё раз.

В 1.0.7 такого не было.
Comment 1 Анатолий Лютин 2007-09-04 15:46:51 MSD
Cинтезировал. В оригинальном Вайне такая же проблема.
Comment 2 Анатолий Лютин 2007-09-04 16:45:09 MSD
Проблема в том, что GetMenu() при переводе мышкой на соседнее меню возвращает не его дескриптор, а null.
Comment 3 Анатолий Лютин 2007-09-04 16:50:01 MSD
Нашёл основную проблему. 
Во-первых:когда отключено управление окнами менеджером, то всё работает.
Во-вторых: главный глюк - когда нажимаешься на меню в 1с 8.0, то от главного окна уходит свойство активности и фокус, и поэтому меню не может найти соседнее. Из-за этого меню похоже и жило в 1.0.7 своей жизнью.

А null возвращает и при запуске под 1.0.7. Значит в 1с реализована нестандартное поведение меню.
Comment 4 Анатолий Лютин 2007-09-06 16:51:58 MSD
Пока исправил так, чтобы при создании всплывающего окна (через create_whole_window) не вызвалась set_initial_wm_hints(). Теперь при переключении одного меню на другое всё нормально, но 1с-ка мигает как новогодняя ёлка, т.к. уходит статус activate.
Comment 5 Анатолий Лютин 2007-09-07 12:27:44 MSD
Проблема в том, меню в 1с 8.0 создаётяс отдельным окном, т.е. меню реализованно не средствами WinApi, а обрабатывается внутри 1с. Из-за этого и проблема с миганием - т.к. создаётся отдельное окно (когда кликаем на любую кнопку меню) wine передаёт управление этому окну оконному менеджеру из-за этого к нему уходит и фокус и активность, а должен уходить только фокус. Из-за этого и проблема с тем, что меню "живёт своей жизнью". Возможный вариант решения - запретить wine управлять такими окнами.
Comment 6 Анатолий Лютин 2007-09-07 17:30:56 MSD
Исправил проблему с переключением активности окна. Сейчас ситуация такая же как в 1.0.7n, правда я откатил не все изменения сделанные вайновцами, а только те строчки, что критичны для нас.
Меню опять работает само по себе, надо будет детально разобраться и закрыть эту багу, главное то, что есть функциональность.

Формирую пока патч.
Comment 7 Анатолий Лютин 2007-09-11 15:19:49 MSD
Предыдущая версия влияла на 1с7.0. Исправил.
Comment 8 Анатолий Лютин 2007-09-13 13:52:08 MSD
Ещё этот патч влияет на поведение меню в 1с.7.7 - начинает жить "своей" жизнью.
Comment 9 Анатолий Лютин 2007-09-13 19:41:19 MSD
Влияние оказывал не этот патч,а user32-focus-manage.c. 
Создал патч, который убирает проблему, которая была в 1.0.7n (winex11.drv-event-menu.patch).
Прикладываю в лист. Ошибку закрываю.
Comment 10 Анатолий Лютин 2007-09-13 19:41:36 MSD
Влияние оказывал не этот патч,а user32-focus-manage.c. 
Создал патч, который убирает проблему, которая была в 1.0.7n (winex11.drv-event-menu.patch).
Прикладываю в лист. Ошибку закрываю.
Comment 11 Анатолий Лютин 2008-02-20 19:50:43 MSK
Благодаря Джулиарду на новых исходниках эта бага снова с нами.
Comment 12 Анатолий Лютин 2008-02-29 17:19:53 MSK
Единсвенная ошибка что пока осталось - это мигание.
Comment 13 Анатолий Лютин 2008-03-05 23:05:03 MSK
Вывод из-под управления - не вариант, т.к. отваливает хак на 150 багу. Конечно жаль, что у нас такие проблемы с обработкой окон x-овым драйвером.
Comment 14 Анатолий Лютин 2008-03-14 23:25:36 MSK
Исправил по-другому хак к 150 ошибке (более корректно). Теперь можно вывести окна меню из-под управления. Во вторник всё проверю, пересмотрю патчи и закрою багу.
Comment 15 Анатолий Лютин 2008-03-19 17:41:29 MSK
Обновился до новых исходников, меню в 1с 8.0/8.1 работает вполне сносно - никуда не пропадает, открываются все подпункты, ничего особо не мигает.

Замечен только один баг - когда открываем второй подпункт - уходит активность из окна, хотя фокус остатаётся. Поэтому считаю, что багу можно закрыть. Все необходимые патчи в patches-list вроде приложил.