Summary: | 1C77: В не managed режиме окно выбора базы неактивное и не имеет фокуса | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Илья Шпигорь <shpigor> |
Component: | Окна / фокус / перерисовка | Assignee: | Svetlana Zhukova <svzhu> |
Status: | CLOSED FIXED | QA Contact: | Денис Баранов <baraka> |
Severity: | normal | ||
Priority: | P1 | CC: | baraka, lav, night, pav, vitperov |
Version: | 1.0.9 | ||
Target Milestone: | release 1.0.10 | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | 3768 | ||
Bug Blocks: | 42, 3119, 3240, 5101 |
Description
Илья Шпигорь
2008-12-16 11:31:18 MSK
Выложил патч. Прблема заключается в том, что окно 1с получает фокус до того, как становится видимым. А X фокус можно передать только окну, у котрого заполненна структура x11drv_win_data. Эта структура заполняется для вновь созданного окна только после того, как оно становитсья видимым. Поэтому окно 1с и не получало X фокус. Для решения проблемы был добавлен флаг WIN_NEEDS_FOCUS во внутреннюю wine'овскую структуру WND, связанную с окном. Флаг устанавливается при попытке передать фокус невидимому окну. commit 9f0724f0f6b589a7cc88069f2d4b55f2e717fd8e не решил проблему. Так же после запуска окно выбора базы неактивно. Приходится тыкать в него мышкой. Тестировал в бутылке 1c77/1c7727. Под Gnome и KDE ошибка не воспроизвелась. Блокирует баг фикс релиз. По идее патч был приложен к прошлой сборке, т.е. wine-1.0.9-alt39.1 wine-etersoft-sql-1.0.9-alt15 libwine-1.0.9-alt39.1 но там ошибка обнаруживается, через ww ошибки нет. Ждем новую сборку и закрываем. Сборка 40/17 Заявленной проблемы нет. Бага снова возникла. Сломалось из-за патча на #3768: commit 500c1c22c572ecf9db15e98fd29a975af647fd53 Author: Ilya Shpigor <shpigor@etersoft.ru> Date: Thu Apr 9 16:06:08 2009 +0400 winex11.drv: Using GetTickCount for XSetInputFocus instead the GetMessageTime (eterbug #3768) Выложил патч. Не managed режим сломался из-за использования GetTickCount вместо GetMessageTime для определения текущего времени в функции XSetInputFocus. В случае использования GetMessageTime, как в оригинальном wine, в XSetInputFocus уходит значение времени равное 0. Почему-то X-ы это устраивает и окно 1с получает фокус при запуске. Но если режим managed, то ломается передача фокуса между отладчиком и 1с. Если использовать GetTickCount - ситуация обратная: не managed режим ломается, а передача фокуса отладчик-1с нормально срабатывает. Решение заключается в проверке на managed режим для выбора функции определения времени - GetTickCount или GetMessageTime. Принято. WINE@Etersoft eter27/eter19 Откатил патч: commit 9f0724f0f6b589a7cc88069f2d4b55f2e717fd8e Author: Ilya Shpigor <shpigor@etersoft.ru> Date: Tue Dec 16 15:19:30 2008 +0300 user32: Add the WIN_NEEDS_FOCUS flag for delayed setting focus (eterbug #3126) Теперь в этом месте вызывается функция WIN_GetRectangles, заменяющая несколько строчек. Требуется переделать патч. Ещё откатил: commit acccb04bebaad88b41bed227661b11c8c0a82503 Author: Ilya Shpigor <shpigor@etersoft.ru> Date: Wed Jan 21 13:25:36 2009 +0300 user32: Using X11DRV_SetFocus instead SetFocus for delayed setting focus (eterbug #3126) Строки "if (focus) SetFocus(hwnd);" больше нет. Требуется переделать патч Нужно проверить наличие баги на eterhack. wine@eterhack bottle 1c/bug42 WINE@Etersoft 1.0 SQL 1.3.27/1.7.1-eter1.10/3 c:/Program Files/1Cv77/BIN Не воспроизвелось. managed режим - winecfg -графика -галочка "разрешить менеджеру окон управлять окнами wine" |