Bug 3910

Summary: VVS Офис: Отображение создаваемых окон за родительски окном
Product: WINE@Etersoft Reporter: Илья Шпигорь <shpigor>
Component: Окна / фокус / перерисовкаAssignee: Илья Шпигорь <shpigor>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: baraka, lav
Version: 1.0.10   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: 10049 Связано с:
Дата напоминания:
Bug Depends on: 3024, 7469    
Bug Blocks: 3962    

Description Илья Шпигорь 2009-05-05 10:03:27 MSD
1) основная пока проблема - это отображение окон на заднем плане, за
родительским окном. В нашей программе создаются модальные
диалоговые окна с изменяемым размером. Они выводятся позади их
предка и работать практически невозможно.

Это относится к дилоговым окнам с изменяемым размером из ресурсов,
вызываемых через функцию WinApi , например:

FARPROC lpProc;
lpProc=MakeProcInstance((FARPROC) dialTwrList, hInstLib );
if(lpProc!=NULL){
ret=DialogBox(hInstLib,"vbrTwr", hWnd,lpProc);
FreeProcInstance(lpProc);
}else MessageBox(0,"Ошибка","",MB_OK);

На всякий случай стиль окна: STYLE DS_MODALFRAME | WS_POPUP |
WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MAXIMIZEBOX

Также выводятся сзади окна-родителя сообщения без Handle:, например
MessageBox(0,"Тест","",MB_OK);
Comment 1 Илья Шпигорь 2009-05-06 11:26:56 MSD
Выложил патч.

Проблема вызвана патчем на багу #3024. Дело в том, что VVS Офис передает фокус окнам до того, как они станут видимы. По этой причине структура data, описывающее их X-овое окно, еще не была создана. Из-за этого X11DRV_SetFocus не отрабатывает и предыдущее topmost окно не сбрасывается.

Решение заключается в том, чтобы создавать структуру data для окон, которым передается фокус в X11DRV_SetFocus.

Тестировать можно в бутылке vvs/vvs_demo.
Comment 2 Денис Баранов 2009-05-10 15:03:08 MSD
Принято.
eter21