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
Наверное проблемы лежат рядом. Вот код на языке 1С, формирующий вопрос: Если Вопрос("Закончить работу с программой?", "Да+Нет", 60)="Нет" Тогда СтатусВозврата(0); Возврат; КонецЕсли; Created attachment 4 [details]
Тест для проверки неадекватности окошка.
Да, в WINE нажатие Esc (как и крестика на окне) формирует код возврата функции Вопрос такой: "2 или 'Отмена' ('Cancel'), если нажата кнопка Отмена;" А, почти всё понятно: В виндах это окошко имеет крестик (X) заблокированным, и соответственно на Esc не реагирует. Created attachment 7 [details]
Исправление общей ошибки для Диалоговых окон
шсправление общей ошибки для Диалоговых окон: При отсутсвии стиля WS_SYSMENU
окно не должно реагировать на кнопку Escape.
Created attachment 8 [details]
Исправление ошибки для MessageBox
Диалоги MessageBox, в которых не используется кнопка Cancel (за исключением
окна MB_OK) должны создаваться без флага WS_SYSMENU.
Зависимости от ошибки #34 нет. Проверить соответствие кнопок на окне с оригиналом, исправить dialog_window1.patch Проблема осталась в W@E 1.0.5 К сожалению, данное решение портит другие окна. Надо смотреть пристальнее. Created attachment 81 [details]
Отрубаем esc для окон где нет "Крестика"
Created attachment 82 [details]
Снимаем "Крестик" с окон у которых в windows "Крестик" заблокирован
Теперь все вроде работает корректно. Нужны тесты. Проблем вроде нет, но общее рассуждение такое: нельзя отключать реакцию на нажатие Esc (в любом случае он должен вызывать событие, потому на него может быть повешено любое действие). Другое дело что окно, которое не должно это делать, не должно реагировать на IDC_CANCEL. Проблема, описанная в баге 71, может вылезти непредсказуемо в каком-то месте. Например, если в 1С создать документ, а потом нажать Esc, то откроется окно подтверждения. И в нём Esc уже не работает. А должен. Пока не буду прикладывать исправление для этой баги. Сперва надо разобраться со всеми диалогами и в правильном месте сделать исправление. При таком важном исправлении нужно проверять _все_ диалоги. Да, и пора осваивать встроенную систему тестов в WINE. Новый патч готов. Название:user32-msgbox-cross.patch |