Bug 1619

Summary: 1Cv77: Основное окно теряет своё положение
Product: WINE@Etersoft Reporter: Александр Пликус <pav>
Component: Окна / фокус / перерисовкаAssignee: Денис Баранов <baraka>
Status: CLOSED FIXED QA Contact:
Severity: critical    
Priority: P5 CC: baraka, lav, night
Version: 1.0.9   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 2095    
Bug Blocks: 1217, 2103    

Description Александр Пликус 2008-04-08 12:50:39 MSD
Окно 1С открыть на полный экран. Затем переключиться на другой стол, а затем вернуться обратно на стол с 1С, то окно с 1С "уедет" под панель управления, как-будто бы ее там нет.
Comment 1 Анатолий Лютин 2008-04-10 16:38:18 MSD
Видел. Буду чинить.
Comment 2 Анатолий Лютин 2008-04-10 18:06:34 MSD
Окно 1с стало смещаться вниз и направо из-за патча Alexandre Julliard : winex11:	Always update the window position without relying on the cached values. Если его отложить, то 1с будет при запуске правильно позицироваться. Но на багу с переключением на разные рабочие столы этот патч не влияет.
Comment 3 Анатолий Лютин 2008-04-10 19:13:54 MSD
Исправил ошибку из-за которой максимизированной окно 1с при запуске меняло свои размеры. Исправление закоммител. Сейчас буду править переключенние между рабочими столами.
Comment 4 Анатолий Лютин 2008-04-10 20:25:17 MSD
Похоже окно неправильно вычисляет свой размер в X11DRV_SetWindowPos, т.к.

fixme:x11drv:X11DRV_sync_client_position setting client win 4000022 pos 0,19,1282x988 changes=3
fixme:x11drv:X11DRV_sync_client_position setting client win 4000022 pos 0,19,1280x937 changes=c
Comment 5 Анатолий Лютин 2008-04-10 20:31:36 MSD
fixme:x11drv:X11DRV_SetWindowPos Rect =(0,40)-(1280,977)
fixme:x11drv:X11DRV_SetWindowPos Rect =(0,40)-(1280,977)
fixme:x11drv:X11DRV_sync_client_position setting client win 400001a pos -4,-23,32x32 changes=f
fixme:x11drv:X11DRV_SetWindowPos Rect =(0,40)-(1280,977)
fixme:x11drv:X11DRV_sync_client_position setting client win 400001a pos 0,19,1282x988 changes=f
fixme:x11drv:X11DRV_SetWindowPos Rect =(21,970)-(53,1002)
fixme:x11drv:X11DRV_SetWindowPos Rect =(4,42)-(1286,1030)
fixme:x11drv:X11DRV_SetWindowPos Rect =(4,42)-(1286,1030)
fixme:x11drv:X11DRV_sync_client_position setting client win 400001a pos 0,19,1280x937 changes=c
fixme:x11drv:X11DRV_SetWindowPos Rect =(4,42)-(1286,1030)
fixme:x11drv:X11DRV_SetWindowPos Rect =(0,40)-(1280,977)


Т.е. если щёлкнуть на любое другое максимизированное иксовое окно, а затем переключиться на 1с, то она восстановит свой размер. 

За завтра постараюсь эту штуку изучить и подправить.
Comment 6 Александр Пликус 2008-05-08 11:11:34 MSD
в 1,0,9 окно так же теряет местоположение при переключениях между столами...
Comment 7 Анатолий Лютин 2008-05-08 11:13:25 MSD
(In reply to comment #6)
> в 1,0,9 окно так же теряет местоположение при
> переключениях между столами...
> 

Угу, я пока исправил только то, что при запуске 1с оно не уменьшается/смещается вправо и вниз, а между рабочими столами не успел сделать - сейчас КМ-Школа и прочие радости жизни..
Comment 8 Анатолий Лютин 2008-05-16 17:26:50 MSD
Почему-то в ТИС не воспроизводится.
Comment 9 Анатолий Лютин 2008-05-21 19:33:32 MSD
Короче нашёл я место с багой:
В show_window не стоит делать 
SetWindowPos( hwnd, HWND_TOP, newPos.left, newPos.top, newPos.right, newPos.bottom, LOWORD(swp) );
при опредёленных параметрах, или не стоит делать именно так. Сейчас подумаю как сделать более правильно, но в любом случае хак сделать уже можно. 
Comment 10 Анатолий Лютин 2008-05-22 11:07:06 MSD
Запостил я хак в свой master, сделал привязку к закрытой части.

В общем эту багу нужно исправить нормально и я это сделаю, когда буду выправлять msg-тесты, а пока считаем что баги уже нет.
Comment 11 Анатолий Лютин 2008-07-09 16:29:21 MSD
Порождает 2095 багу.
Comment 12 Анатолий Лютин 2008-07-09 17:07:55 MSD
На новых исходниках ситуация следующая:
Бага так же воспрозводиться.

Если максимизировать окно 1с и в нём вызвать MessageBox, то после переключения на другой рабочий стол и обратно - окно 1с восстанавливается (хотя такого быть не должно), а после закрытия MessageBox - максимизируется..
Comment 13 Анатолий Лютин 2008-07-10 13:43:34 MSD
*** Bug 2101 has been marked as a duplicate of this bug. ***
Comment 14 Анатолий Лютин 2008-07-10 14:43:38 MSD
В оригинальном wine такая же проблема. Отключения разных панелей инструментов ничего не даёт. Воспроизводится пока только на Бухгалтерии. 

Пути исправления - тестирования и доработка ShowWindow/SetWindowPos/
Comment 15 Анатолий Лютин 2008-07-10 20:21:59 MSD
Найдена небольшая зацепка: когда переключаешь между рабочими столами существует след. последовательность:
fixme:win:show_window hwnd=0x20080, cmd=5, wasVisible 0
fixme:win:show_window hwnd=0x20048, cmd=6, wasVisible 1
fixme:win:show_window hwnd=0x20048, cmd=9, wasVisible 1
fixme:win:show_window hwnd=0x10070, cmd=0, wasVisible 0

- окно разворачивается неправильно.

Затем, если переключиться на другое приложение, а затем обратно на 1с появляется дополнительный вызов SW_HIDE:
fixme:win:show_window hwnd=0x20080, cmd=5, wasVisible 0
fixme:win:show_window hwnd=0x20048, cmd=6, wasVisible 1
fixme:win:show_window hwnd=0x20048, cmd=9, wasVisible 1
fixme:win:show_window hwnd=0x10070, cmd=0, wasVisible 0
fixme:win:show_window hwnd=0x10070, cmd=0, wasVisible 0

и окно принимает нормальный размер.
Стоит отметить, что при простой свёртке->развёртке, идут след.вызовы:
fixme:win:show_window hwnd=0x20048, cmd=6, wasVisible 1
fixme:win:show_window hwnd=0x20048, cmd=9, wasVisible 1
fixme:win:show_window hwnd=0x10070, cmd=0, wasVisible 0
fixme:win:show_window hwnd=0x20048, cmd=6, wasVisible 1
Comment 16 Анатолий Лютин 2008-07-10 20:25:51 MSD
И ещё наблюдение про наш wine:
Если даже просто свернуть->развернуть окно 1с в макс. состоянии, то оно уйдёт за панель задач, а если переключиться на другое приложение, а затем обратно на 1с, то размер высчитается правильно.
Comment 17 Анатолий Лютин 2008-07-10 20:29:16 MSD
В оригинальном wine, кстати, так же...
Comment 18 Анатолий Лютин 2008-07-10 20:33:07 MSD
Даже круче. Если в оригинальном wine свернуть->развернуть окно, то потом переключение на другие окна не восстановит его правильный размер. А наш wine восстановит.
Comment 19 Анатолий Лютин 2008-07-30 16:11:19 MSD
Я только что сделал клон нашего git-репозитория, затем получил ветку eterhack, собрал её.

Далее в бутылке 1c77_buh я выбрал БД Бухглатерия (демо-версия).

Данная бага при таких условиях не воспроизвелась. 

Прошу повторить/закрыть в случае удачи.
Comment 20 Александр Пликус 2008-07-30 16:28:19 MSD
у меня это воспроизводится на удаленных иксах, на таких пакетах 
[pav@server ~]$ rpm -qa | grep wine
libwine-1.0.9-alt16
wine-1.0.9-alt16
wine-etersoft-sql-1.0.9-alt7
docs-wine_intro-0.1.1-alt1
libwine-twain-1.0.9-alt16
libwine-devel-1.0.9-alt16
libwine-gl-1.0.9-alt16
wine-docs-0.9.52-alt1
[pav@server ~]$ rpm -qi wine
Name        : wine                         Relocations: (not relocatable)
Version     : 1.0.9                             Vendor: ALT Linux Team
Release     : alt16                         Build Date: Втр 15 Июл 2008 22:42:34
Install date: Срд 16 Июл 2008 13:24:38      Build Host: builder.etersoft.ru
Group       : Эмуляторы                     Source RPM: wine-1.0.9-alt16.src.rpm
Size        : 17316312                         License: LGPL
Packager    : Vitaly Lipatov <lav@altlinux.ru>
URL         : http://winehq.org.ru/
Summary     : Среда для запуска программ Windows (сборка от Etersoft)
Description :
Данная сборка является свободной частью продукта WINE@Etersoft,
предназначенного для исполнения коммерческих Windows-программ.
WINE Не Является Эмулятором. Это альтернативная реализация API Windows
3.x и Win32. Wine предоставляет как инструментарий разработки (Winelib)
для переноса унаследованных исходных кодов из среды Windows в среду
Unix, так и программный загрузчик, позволяющий исполнять двоичный код, разработанный
для Windows 3.1/95/NT, в среде разных вариантов
Unix на платформе Intel. Wine не требует наличия Microsoft Windows,
поскольку это полностью альтернативная реализация, состоящая из полностью
свободного кода.

WINE всё ещё находится в стадии разработки, поэтому
не ожидайте, что всё будет работать.

Обращайтесь за дополнительной информацией на сайт http://winehq.org.ru
Система регистрации ошибок: http://bugs.etersoft.ru

При необходимости вы можете получить коммерческую поддержку данного продукта
в компании Etersoft или у её партнёров: wine@etersoft.ru
[pav@server ~]$ rpm -qi wine-etersoft
предупреждение: пакет wine-etersoft не установлен
[pav@server ~]$ rpm -qi wine-etersoft-sql
Name        : wine-etersoft-sql            Relocations: (not relocatable)
Version     : 1.0.9                             Vendor: ALT Linux Team
Release     : alt7                          Build Date: Срд 16 Июл 2008 14:09:12
Install date: Срд 16 Июл 2008 14:10:40      Build Host: builder.etersoft.ru
Group       : Разработка/C                  Source RPM: wine-etersoft-sql-1.0.9-alt7.src.rpm
Size        : 22768142                         License: Commercial
Packager    : Vitaly Lipatov <lav@altlinux.ru>
URL         : http://www.etersoft.ru/wine
Summary     : Коммерческий продукт WINE@Etersoft для запуска Win-приложений
Description :
Коммерческий продукт WINE@Etersoft для запуска Win-приложений, позволяющий
запускать многие популярные деловые приложения, такие как
Microsoft Office, 1C:Предприятие, и многие другие.
Лицензия на операционную систему Windows не требуется.

Данная версия включает в себя поддержку разделяемого доступа к файлам.
Поддерживается MS SQL Clients, PostgreSQL, SELTA@Etersoft and BDE.

Регистрационный номер: EEEE-C0DE.

Вы можете проверить подлинность продукта, открыв страницу
http://sales.etersoft.ru/product/EEEE-C0DE

Ознакомьтесь с авторским договором
в файле /usr/share/doc/wine-etersoft-1.0.9/licence.html и доп. условиями
распространения в файле /usr/share/doc/wine-etersoft-1.0.9/redist.html.

Краткая информация о работе с пакетом расположена
в /usr/share/doc/wine-etersoft-sql-1.0.9/README.html
[pav@server ~]$                                     
Comment 21 Анатолий Лютин 2008-07-31 11:17:00 MSD
Я вроде просил протестировать тестеров.
Comment 22 Денис Баранов 2008-08-04 14:14:27 MSD
Тестировал в 2 бутылках: wine-1c77sql и 1c77_buh. В обоих воспроизводится ошибка с разными рабочими столами.
Comment 23 Анатолий Лютин 2008-08-04 15:06:09 MSD
(In reply to comment #22)
> Тестировал в 2 бутылках: wine-1c77sql и 1c77_buh. В
> обоих воспроизводится ошибка с разными
> рабочими столами.
> 

Отлично, а с собранным eterhack-ом ?( можно спросить Виталия, как получить эту версию или самому её сделать.)
Comment 24 Анатолий Лютин 2008-08-04 15:11:51 MSD
Очень странно - только что сам снова проверил на eterhack - в бутылке 1c77sql воспроизводится, а в 1c77_buh всё хорошо. Надо найти отличия в версиях 1с и типовой БД.
Comment 25 Денис Баранов 2008-08-08 20:10:29 MSD
Проверил на последнем eterhack ошибка не воспроизвелась ни в одной бутылке.