Bug 37

Summary: 1Cv77: Неправильно реагирует на Esc при подтверждении выхода
Product: WINE@Etersoft Reporter: Vitaly Lipatov <lav>
Component: Окна / фокус / перерисовкаAssignee: Анатолий Лютин <vostok>
Status: CLOSED FIXED QA Contact: Vitaly Lipatov <lav>
Severity: normal    
Priority: P2 CC: baraka, vostok
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 42, 71, 190    
Attachments: Тест для проверки неадекватности окошка.
Исправление общей ошибки для Диалоговых окон
Исправление ошибки для MessageBox
Отрубаем esc для окон где нет "Крестика"
Снимаем "Крестик" с окон у которых в windows "Крестик" заблокирован

Description Vitaly Lipatov 2006-03-04 19:06:30 MSK
При выходе из бухгалтерской конфигурации открывается окно подтверждения 
"Вы действительно хотите выйти?" 
В Windows оно не реагирует на Esc, в WINE - ESC действует "OK".
Comment 1 Vitaly Lipatov 2006-03-04 19:07:19 MSK
Наверное проблемы лежат рядом. 
Comment 2 Vitaly Lipatov 2006-03-04 19:09:07 MSK
Вот код на языке 1С, формирующий вопрос: 
Если Вопрос("Закончить работу с программой?", "Да+Нет", 60)="Нет" Тогда 
       СтатусВозврата(0); 
       Возврат; 
КонецЕсли; 
 
Comment 3 Vitaly Lipatov 2006-03-04 19:13:17 MSK
Created attachment 4 [details]
Тест для проверки неадекватности окошка.
Comment 4 Vitaly Lipatov 2006-03-04 19:28:23 MSK
Да, в WINE нажатие Esc (как и крестика на окне) формирует код возврата функции 
Вопрос такой: 
"2 или 'Отмена' ('Cancel'), если нажата кнопка Отмена;" 
 
А, почти всё понятно: В виндах это окошко имеет крестик (X) заблокированным, и 
соответственно на Esc не реагирует. 
Comment 5 Кирилл Маргорин 2006-03-15 14:34:21 MSK
Created attachment 7 [details]
Исправление общей ошибки для Диалоговых окон

шсправление общей ошибки для Диалоговых окон: При отсутсвии стиля WS_SYSMENU
окно не должно реагировать на кнопку Escape.
Comment 6 Кирилл Маргорин 2006-03-15 14:35:42 MSK
Created attachment 8 [details]
Исправление ошибки для MessageBox

Диалоги MessageBox, в которых не используется кнопка Cancel (за исключением
окна MB_OK) должны создаваться без флага WS_SYSMENU.
Comment 7 Кирилл Маргорин 2006-03-15 14:36:32 MSK
Зависимости от ошибки #34 нет.
Comment 8 Vitaly Lipatov 2006-04-22 22:24:06 MSD
Проверить соответствие кнопок на окне с оригиналом, исправить 
dialog_window1.patch  
Comment 9 Vitaly Lipatov 2006-12-12 21:21:12 MSK
Проблема осталась в W@E 1.0.5
К сожалению, данное решение портит другие окна. Надо смотреть пристальнее.
Comment 10 Анатолий Лютин 2006-12-23 16:37:33 MSK
Created attachment 81 [details]
Отрубаем esc для окон где нет "Крестика"
Comment 11 Анатолий Лютин 2006-12-23 16:38:32 MSK
Created attachment 82 [details]
Снимаем "Крестик" с окон у которых в windows "Крестик" заблокирован
Comment 12 Анатолий Лютин 2006-12-23 16:39:40 MSK
Теперь все вроде работает корректно. Нужны тесты.
Comment 13 Vitaly Lipatov 2006-12-23 18:32:57 MSK
Проблем вроде нет, но общее рассуждение такое:
нельзя отключать реакцию на нажатие Esc (в любом случае он должен вызывать событие, потому на него может быть повешено любое действие). Другое дело что окно, которое не должно это делать, не должно реагировать на IDC_CANCEL.
Проблема, описанная в баге 71, может вылезти непредсказуемо в каком-то месте.
Comment 14 Vitaly Lipatov 2006-12-23 18:35:15 MSK
Например, если в 1С создать документ, а потом нажать Esc, то откроется окно подтверждения. И в нём Esc уже не работает. А должен.
Comment 15 Vitaly Lipatov 2006-12-23 18:38:04 MSK
Пока не буду прикладывать исправление для этой баги. Сперва надо разобраться со всеми диалогами и в правильном месте сделать исправление.
При таком важном исправлении нужно проверять _все_ диалоги.
Да, и пора осваивать встроенную систему тестов в WINE.
Comment 16 Анатолий Лютин 2006-12-25 21:19:32 MSK
Новый патч готов. 
Название:user32-msgbox-cross.patch