Bug 4851

Summary: Поведение ESC в Консультант+
Product: WINE@Etersoft Reporter: Суворов Юрий <sua>
Component: ОбщееAssignee: Илья Шпигорь <shpigor>
Status: CLOSED FIXED QA Contact: Глеб Кордюков <sonner>
Severity: minor    
Priority: P4 CC: baraka, lav, shpigor, sonner
Version: 1.0.11   
Target Milestone: ---   
Hardware: PC   
OS: Ubuntu   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 767, 42    

Description Суворов Юрий 2010-01-21 13:46:40 MSK
Проблема с функцией Еsc под Линуксом с новым модулем vr15. Суть проблемы в следующем : Строим  список документов по запросу из Карточки поиска либо из Правового навигатора. Заходим в текст документа. При нажатии кнопки "Назад" или  Esc возвращаемся не в список документов , а обратно в форму создания запроса в карточке поиска либо в правовой навигатор. 

Однако. на кнопке "назад" есть стрелка комбо бокса (появился в vr14). При нажатии этой стрелки выпадает список в котором фигурируют "меню" "карточка поиска" и "результат поиска". Если выбрать "результат поиска", то по ESC  и "назад" теперь всегда возвращает в результаты поиска.  Повтор поиска по другим условиям эффект ESC  и "назад" не изменяет, возвращает в результаты. Повтор поиска по другим условиям, но при закрытии всех окон К+ и открытии карточки поиска снова, портит поведение кнопок.

проявляется на 1.0.11 9/5,  1.0.11 11/6, версии для ubuntu 9.04. 
не проявляется в Windows - там ESC всегда возвращяет в результаты поиска.
Comment 1 Vitaly Lipatov 2010-01-21 14:14:22 MSK
Глеб, надо подтвердить и передать Илье в виде, пригодном для исправления.
Comment 2 Глеб Кордюков 2010-01-25 19:10:03 MSK
Проблема с функцией Еsc под Линуксом с новым
модулем vr15. Суть проблемы в следующем :
Строим  список документов по запросу из
Карточки поиска либо из Правового
навигатора. Заходим в текст документа. При
нажатии кнопки "Назад" или  Esc возвращаемся
не в список документов , а обратно в форму
создания запроса в карточке поиска либо в
правовой навигатор.

Проблема проявляется. Выкидывает в окно поиска.


Однако. на кнопке "назад" есть стрелка комбо
бокса (появился в vr14). При нажатии этой
стрелки выпадает список в котором
фигурируют "меню" "карточка поиска" и
"результат поиска". Если выбрать "результат
поиска", то по ESC  и "назад" теперь всегда
возвращает в результаты поиска.  Повтор
поиска по другим условиям эффект ESC  и
"назад" не изменяет, возвращает в
результаты. Повтор поиска по другим
условиям, но при закрытии всех окон К+ и
открытии карточки поиска снова, портит
поведение кнопок.

Подтверждаю. После установки в "Назад" "результаты поиска" - возвращается в результаты.
wine 1.0.12-eter1.3/1

проверял в swine consultant/cons-client
диск f:
cons.exe
Далее как написал Юрий.



p.s. если не сложно - заодно посмотри пожалуйста - причину почему при нажатии в стартовом окне - "правовой навигатор" - окно закрывается, а при дальнейшем нажатии через меню - ничего не происходит. Ответь в личку и если что багу создаю.
Comment 3 Илья Шпигорь 2010-05-21 12:08:48 MSD
Если закрывать это mdi окно крестиком, т.е. через WM_SYSCOMMAND(SC_CLOSE), то ошибка не воспроизводится. Фокус передается предыдущему окну, т.е к "результату поиска", а не к "карточке поиска".
Comment 4 Илья Шпигорь 2010-05-21 12:24:09 MSD
to baraka@
Можно где-нибудь у нас запустить консультант под виндой?
Comment 5 Денис Баранов 2010-05-21 18:27:23 MSD
Сделай пожалуйста в какой нибудь виртуальной машине Консультант и отпиши, после этого перевесь багу обратно на shpigor@
Comment 6 Илья Шпигорь 2010-05-25 12:10:11 MSD
Удалось зарегестрировать консультанта под виндой.
Comment 7 Илья Шпигорь 2010-05-31 17:10:11 MSD
Ошибка заключается в том, что при нажатии кнопки "Назад" приложение посылает сообщение WM_MDINEXT с lParam = 0. Согласно MSDN wine активирует следующее по порядку mdi окно. В данном случае это карточка поиска.

Вопрос - почему приложение посылает сообщение WM_MDINEXT с неправильным параметром?
Comment 8 Илья Шпигорь 2010-06-01 17:40:45 MSD
Протестировал в windows XP поведение MDI окон при обработке сообщения WM_MDINEXT.
ctrl+tab - генерируется WM_MDINEXT с lParam = 0, происходит переключение на предыдущее окно
ctrl+shift+tab - с lParam = 1, переключение на следующее окно.

В то же время в wine:
ctrl+tab - с lParam = 1, переключение на предыдущее окно
ctrl+shift+tab - с lParam = 0, переключение на следующее окно.

Очевидно ошибка в обработке WM_MDINEXT mdi клиентом + при нажатии ctrl+tab... генерируется WM_MDINEXT с неправильным lParam.

При этом в msdn написано (страница про WM_MDINEXT):

lParam
If this parameter is zero, the system activates the next MDI child window and places the child window identified by the wParam parameter behind all other child windows. If this parameter is nonzero, the system activates the previous child window, placing it in front of the child window identified by wParam.

Т.е. wine ведет себя согласно msdn, а winxp нет!
Comment 9 Илья Шпигорь 2010-06-01 17:47:49 MSD
Помнится я еще тест на эту проблему делал и посылал его в winehq. Мне сказали - смотри MSDN.
Comment 10 Илья Шпигорь 2010-06-01 18:07:00 MSD
Выложил патч (будет доступен в следующей сборке wine).

Решение - сделать обработку lParam сообщения WM_MDINEXT, как в windows.

Попробую написать новый тест и отправить его на winehq.
Comment 11 Глеб Кордюков 2010-10-06 15:21:57 MSD
Ситуация такая, что при нажатии на Esc возвращаемся в меню поиска, а окно с готовым поиском перекрыто, почему то окном меню поиска.