Bug 2605

Summary: Не заполняются типсы в контроле Документы спецификации
Product: [Поддержка проектов] КОМПАС 3D Reporter: Виталий Булгаков <bulgakov>
Component: ТестированиеAssignee: Евгений Шиц <sea>
Status: CLOSED FIXED QA Contact: Олег Шевченко <olezha>
Severity: minor    
Priority: P2 CC: amorozov, kondratyuk, lav, mais, mx
Version: v10   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 753, 1733, 3000, 3106, 6063, 8900    
Attachments: Screenshot
Исходники теста
Тест на типсы
скриншот

Description Виталий Булгаков 2008-10-14 15:36:45 MSD
1. Запустить КОМПАС
2. Открыть документ ....wine_c/Program Files/ASCON/KOMPAS-3D V10/Samples/Drawings/12020.SPW
3. Установить выделение на объект КСКВ.12.020СБ в разделе Документация
4. На панели свойств (внизу) перейти на вкладку Документы и нажать кнопку Документы
При наведении указателя мыши на путь к документу - всплывает пустой типс ( в типсе д.б. путь к документу).
См. скриншот во вложении.
Comment 1 Виталий Булгаков 2008-10-14 15:37:34 MSD
Created attachment 787 [details]
Screenshot
Comment 2 Илья Шпигорь 2009-04-10 14:05:47 MSD
Этот типс не стандартный контрол - tooltips_class32, а имеет класс ZTitleTip. С помощью тестов воспроизвести проблему не удалось. Для решения баги необходимо знать как контрол реализован и как используется. Это необходимо для воспроизведения последовательности сообщений и вызовов WinAPI функций.

Вероятнее всего, причина ошибки в том, что последовательность посылки сообщений WM_PAINT в wine отличается от windows, т.е. WM_PAINT приходит после отрисовки текста в типсе и его затирает.
Comment 3 Илья Шпигорь 2009-04-10 14:35:19 MSD
Created attachment 1138 [details]
Исходники теста

Это исходники теста, который воспроизводит похожую ситуацию. Как выяснилось, Компас ведет себя иначе. Ошибку в тесте исправить удалось, но при этом в Компасе типс все равно не заполняется.
Comment 4 Виталий Булгаков 2009-04-16 09:21:42 MSD
Created attachment 1153 [details]
Тест на типсы
Comment 5 Илья Шпигорь 2009-04-17 14:58:10 MSD
Выложил группу патчей.

Проблема заключается в том, что когда окно типса становится видимым генерируется сразу несколько сообщений WM_PAINT (wineserver'ом и X11). После этого Компас выводит в типс текст, но некоторые сообщения WM_PAINT в этот момент остаются не обработанными. В результате текст перекрывается фоном типса.

Решение заключается в том, чтобы запретить wineserver'у генерировать WM_PAINT сообщения, а также убрать из маски обрабатываемых сообщений для типсов ExposureMask, т.е. типсы больше не реагируют на событие X-ов Expose. Вместо этого при отображеннии окна типса перерисовка будет производится на уровне WinAPI.

P.S. Эти патчи также должны решить проблему с перекрывающимися типсами в 1с8.
Comment 6 Денис Баранов 2009-07-29 20:45:05 MSD
Принято
WINE@Etersoft CAD eter2.1/eter2
Comment 7 Александр Морозов 2012-02-15 18:08:39 MSK
commit d43356f97e94678cb8cbbec0e0d7572c23a1eaec
Author: Ilya Shpigor <shpigor@etersoft.ru>
Date:   Fri Apr 17 14:33:04 2009 +0400

    winex11.drv: Remove ExposureMask for windows with WS_EX_TOOLWINDOW style (eterbug #2605)

Этот патч вызывает проблему с отрисовкой выпадающего меню выбора пользователя при входе в базу 1С 8.2. Откатил его.
Comment 8 Vitaly Lipatov 2012-09-17 15:45:07 MSK
Откачен в eterhack (1.5.13), вызывал первоначальную неотрисовку выпадающего меню:

commit 8322b010f26c44b1a794dcf92394fa9274905e95
Author: Ilya Shpigor <shpigor@etersoft.ru>
Date:   Fri Apr 17 10:31:54 2009 +0400

    server: Skip redrawing windows on set_window_pos with the SWP_SHOWWINDOW flag (eterbug #2605)

diff --git a/server/window.c b/server/window.c
index a24b2d6..bdfd60d 100644
--- a/server/window.c
+++ b/server/window.c
@@ -1661,7 +1661,7 @@ static void set_window_pos( struct window *win, struct window *previous,
         }
     }
 
-    if (exposed_rgn)
+    if (exposed_rgn && !(swp_flags & SWP_SHOWWINDOW))
         redraw_window( win, exposed_rgn, 1, RDW_INVALIDATE | RDW_ERASE | RDW_FRAME | RDW_ALLCHILDREN );
 
 done:
Comment 9 Vitaly Lipatov 2014-09-11 18:42:31 MSK
Откладываем задачи, к которым не обращались более 100 дней.
Comment 10 Евгений Шиц 2024-03-19 14:13:25 MSK
Склонировал ВМ на AltWS10, заказал сборку wine@etersoft c sales, установил

$ epmqp wine
wine-etersoft-9.0.14-eter0.p10.1.x86_64
wine-etersoft-winetricks-20240223-eter0.p10.1.noarch
wine-etersoft-grdwine-0.5.7.1-eter1.p10.2.x86_64
wine32-etersoft-grdwine-0.5.7.1-eter1.p10.2.i586
wine-etersoft-gecko-2.47.4-eter0.p10.1.noarch
wine-etersoft-network-9.0.4-eter0.p10.1.x86_64
wine-etersoft-programs-9.0.14-eter0.p10.1.x86_64
wine-etersoft-mono-8.1.0-eter0.p10.1.noarch
wine32-etersoft-9.0.14-eter0.p10.1.i586
wine-etersoft-full-9.0.14-eter0.p10.1.x86_64
wine-etersoft-common-9.0.14-eter0.p10.1.noarch

Перешел в /var/ftp/pvt/Windows/CAD/Kompas/KOMPAS-3D_v22_x64/v22/x64/KOMPAS-3D_v22_x64 и выполнил $ wine_install_kompas
Компас установил, ошибок при установке не было.

В ~/.wine/drive_c/ProgramData/ASCON создал license.ini с содержанием:
[Common]
host = license.server

В компасе файл -> открыть -> С -> Program Files/ASCON/KOMPAS-3D V10/Samples/Drawings/12020.SPW
Выделил обьект КСКВ.12.020СБ

В левоми меню параметры -> спецификация -> документация -> выделить путь под разделом "документ". Появляется всплывающая подсказка с полным путем к файлу.

Вывод: ошибка не воспроизводится
Comment 11 Евгений Шиц 2024-03-19 14:13:49 MSK
Created attachment 6077 [details]
скриншот
Comment 12 Олег Шевченко 2024-03-19 23:22:23 MSK
Закрыта.