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с стало смещаться вниз и направо из-за патча Alexandre Julliard : winex11: Always update the window position without relying on the cached values. Если его отложить, то 1с будет при запуске правильно позицироваться. Но на багу с переключением на разные рабочие столы этот патч не влияет. Исправил ошибку из-за которой максимизированной окно 1с при запуске меняло свои размеры. Исправление закоммител. Сейчас буду править переключенние между рабочими столами. Похоже окно неправильно вычисляет свой размер в 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 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с, то она восстановит свой размер. За завтра постараюсь эту штуку изучить и подправить. в 1,0,9 окно так же теряет местоположение при переключениях между столами... (In reply to comment #6) > в 1,0,9 окно так же теряет местоположение при > переключениях между столами... > Угу, я пока исправил только то, что при запуске 1с оно не уменьшается/смещается вправо и вниз, а между рабочими столами не успел сделать - сейчас КМ-Школа и прочие радости жизни.. Почему-то в ТИС не воспроизводится. Короче нашёл я место с багой: В show_window не стоит делать SetWindowPos( hwnd, HWND_TOP, newPos.left, newPos.top, newPos.right, newPos.bottom, LOWORD(swp) ); при опредёленных параметрах, или не стоит делать именно так. Сейчас подумаю как сделать более правильно, но в любом случае хак сделать уже можно. Запостил я хак в свой master, сделал привязку к закрытой части. В общем эту багу нужно исправить нормально и я это сделаю, когда буду выправлять msg-тесты, а пока считаем что баги уже нет. Порождает 2095 багу. На новых исходниках ситуация следующая: Бага так же воспрозводиться. Если максимизировать окно 1с и в нём вызвать MessageBox, то после переключения на другой рабочий стол и обратно - окно 1с восстанавливается (хотя такого быть не должно), а после закрытия MessageBox - максимизируется.. *** Bug 2101 has been marked as a duplicate of this bug. *** В оригинальном wine такая же проблема. Отключения разных панелей инструментов ничего не даёт. Воспроизводится пока только на Бухгалтерии. Пути исправления - тестирования и доработка ShowWindow/SetWindowPos/ Найдена небольшая зацепка: когда переключаешь между рабочими столами существует след. последовательность: 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 И ещё наблюдение про наш wine: Если даже просто свернуть->развернуть окно 1с в макс. состоянии, то оно уйдёт за панель задач, а если переключиться на другое приложение, а затем обратно на 1с, то размер высчитается правильно. В оригинальном wine, кстати, так же... Даже круче. Если в оригинальном wine свернуть->развернуть окно, то потом переключение на другие окна не восстановит его правильный размер. А наш wine восстановит. Я только что сделал клон нашего git-репозитория, затем получил ветку eterhack, собрал её. Далее в бутылке 1c77_buh я выбрал БД Бухглатерия (демо-версия). Данная бага при таких условиях не воспроизвелась. Прошу повторить/закрыть в случае удачи. у меня это воспроизводится на удаленных иксах, на таких пакетах [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 ~]$ Я вроде просил протестировать тестеров. Тестировал в 2 бутылках: wine-1c77sql и 1c77_buh. В обоих воспроизводится ошибка с разными рабочими столами. (In reply to comment #22) > Тестировал в 2 бутылках: wine-1c77sql и 1c77_buh. В > обоих воспроизводится ошибка с разными > рабочими столами. > Отлично, а с собранным eterhack-ом ?( можно спросить Виталия, как получить эту версию или самому её сделать.) Очень странно - только что сам снова проверил на eterhack - в бутылке 1c77sql воспроизводится, а в 1c77_buh всё хорошо. Надо найти отличия в версиях 1с и типовой БД. Проверил на последнем eterhack ошибка не воспроизвелась ни в одной бутылке. |