Bug 5479

Summary: 1с60: Нет меню в ячейке отчёта
Product: WINE@Etersoft Reporter: Andrey Vusik <night>
Component: Окна / фокус / перерисовкаAssignee: Илья Шпигорь <shpigor>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: minor    
Priority: P4 CC: baraka, regan
Version: 1.0.12   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: 13899 Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 5395    
Attachments: Скриншот

Description Andrey Vusik 2010-04-16 14:39:33 MSD
Бутылка 1c60/1c60
Журнал операций - Ввести документ- Накладная - Документ
Смотреть скриншот: по нажатии по ячейке правой кнопкой  (либо f2) должно появляться меню редактора поля.
Comment 1 Andrey Vusik 2010-04-16 14:40:17 MSD
Created attachment 1653 [details]
Скриншот
Comment 2 Andrey Vusik 2010-04-16 14:42:22 MSD
> меню редактора поля.
> 
Поправка:
Просто редактор поля.
Comment 3 Andrey Vusik 2010-04-16 18:08:41 MSD
В wwr 1.0.11 работает.
Comment 4 Andrey Vusik 2010-04-16 18:28:58 MSD
Недопроверил...
Сломали в 1.0.12-eter4-eter3
В 1.0.12-eter3-eter3 всё работает.

Кажется, проблема в фокусе.
Comment 5 Илья Шпигорь 2010-04-27 15:27:29 MSD
> Смотреть скриншот: по нажатии по ячейке
> правой кнопкой  (либо f2) должно появляться
> меню редактора поля.

Небольшая поправка. Из заявки 13899:

> невозможно вызвать так называемую "палитру инструментов",
> которая возникает при двойном нажатии на редактируемое полу в виде
> дополнительного окна 

Это меню должно появляться по F2 или двойному нажатию, а не по клику правой кнопкой мыши.

Comment 6 Илья Шпигорь 2010-04-27 16:46:14 MSD
Сломалось из-за коммита:

commit 211336eb91bd3f5b6fdae48b38531a74017e49db
Author: Ilya Shpigor <shpigor@etersoft.ru>
Date:   Sat Feb 27 15:21:04 2010 +0300

    user32: Process page fault exception on the WINPROC_wrapper call through __TRY block (eterbug #2085)
Comment 7 Илья Шпигорь 2010-04-27 17:20:36 MSD
Запуск 1с60 в монопольном режиме:
wine 1sbw.exe /M

Может понадобиться если некорректно завершить работу приложения.
Comment 8 Илья Шпигорь 2010-04-28 12:51:25 MSD
Выложил патч.

Проблема в том, что WINPROC_wrapper генерирует исключение page fault в 1с60 при вызове меню ячейки. Если обрабатывать это исключение в блоке __TRY - меню не отображается. Если не обрабатывать - приложение не падает и меню корректно создается.

Это связано либо с ошибкой в реализации блока __TRY в wine, либо исключение обрабатывается где-то еще. Если обрабатывается где-то еще, то не понятно почему возникает бага #2085, в которой при этом же page fault exception приложение падает.

Решение заключается в дополнительной проверке. Если произошло исключение, то с помощью ReadProcessMemory проверяем - доступна ли для чтения виртуальная память, при обращении к которой произошло исключение. Если да вызываем WINPROC_wrapper без обработки исключения.
Comment 9 Marat Sharipov 2010-10-30 15:57:01 MSD
Все работает проверенно в бутылке 1c60/1c60
Принята