Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 2605 - Не заполняются типсы в контроле Документы спецификации   Make a simular bug
Summary: Не заполняются типсы в контроле Документы спецификации
Status: DEFERRED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Окна / фокус / перерисовка (show other bugs)
Version: 1.0.9
Hardware: PC All
: P2 major
Target Milestone: ---
Assignee: Илья Шпигорь
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 753 3000 8900 1733 3106 6063
  Show dependency treegraph
 
In work:
Reported: 2008-10-14 15:36 MSD by Виталий Булгаков
Modified: 2015-02-28 16:57 MSK (History)
3 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments
Screenshot (117.71 KB, image/png)
2010-11-18 03:58 MSK, Виталий Булгаков
Details
Исходники теста (15.94 KB, application/x-zip)
2010-11-18 03:58 MSK, Илья Шпигорь
Details
Тест на типсы (38.04 KB, application/x-zip-compressed)
2010-11-18 03:58 MSK, Виталий Булгаков
Details

Note You need to log in before you can comment on or make changes to this bug.
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 дней.