WINE@Etersoft version: 1.0.12-eter11.13/22 редактирование карт маршрутов бизнес-процессов, в основном, не работает - не удается переключаться между элементами карты маршрута, выделение сохраняется только на одном элементе
Инструкция по воспроизведению: 1. Запустить 1С:Предприятие 8.2 (любую базу, в любом режиме). 2. Нажать [Файл][Открыть] или CTRL+O 3. Выбрать файл "ПродажаТовара.grs" все необходимое тут: /var/ftp/pvt/Windows/Testing/RT/20141 ubuntu 11.04 WINE@Etersoft 1.0 Network 1.0.12-eter11.14/22 1c 8.2 база бухучет (демо) (присланная клиентом база загружается,но не открывается) Открываю маршрутную карту,кликаю один жлемент,перетаскиваю его.Кликаю другой - не реагирует,выделение остается на первом.
Created attachment 2243 [details] маршрутная карта
Проблема воспроизводится. Фокус не переходит на обьекты в схеме, которые находятся на заднем плане, при этом можно текущий обьект перевести на задний план(правой кнопкой мыши по текущему обьекту - > на задний план), при этом автоматически один из обьектов в очереди переходит на первый план. В консоле никаких сообщений по этому поводу(да и откуда им взяться, если просто так реализована работа фокуса).
*** Bug 5893 has been marked as a duplicate of this bug. ***
*** Bug 6575 has been marked as a duplicate of this bug. ***
Более свежая проверка eterhack bottle 1c82/6575 WINE@Etersoft 1.0 SQL 2.0.0-eter0.13/2 -Входите в конфигуратор. -Файл-Новый-Графическая схема -Рисуете несколько блоков и пытаетесь мышкой вернуться к первому блоку. помимо того,что (В ответ на comment #3) > Проблема воспроизводится. Фокус не переходит на обьекты в схеме, которые > находятся на заднем плане, при этом можно текущий обьект перевести на задний > план(правой кнопкой мыши по текущему обьекту - > на задний план), при этом > автоматически один из обьектов в очереди переходит на первый план. > также работает "ТАВ"
P.S.Создать графическую схему можно и в режиме "предприятие", и в режиме конфигуратора, причем в пустой конфигурации (в режиме конфигуратора вообще можно просто создать папку и в ней создать базу,не имея таковой заранее)
Когда указатель выводится за пределы блока схемы должен устанавливаться новый курсор (обычная стрелка вместо четырехконечной). Для 1С версии 8.2.14.540 это делает функция 0х15F2B500 (еще она настраивает какие-то структуры 1С-ки, видимо это переход в состояние "указатель вне объектов схемы"). Под Вайном эта функция не вызывается при выводе указателя из блока, поэтому в любой точке листа схемы реакция на правый клик, на перетаскивание такая как-будто указатель мыши над активным блоком.
Переключение курсора есть результат приема WM_SETCURSOR. Обработчик этого сообщения выбирает нужный курсор и т.д. При попадании указателя на лист схемы происходит захват мыши и поэтому дожидаться WM_SETCURSOR и WM_NCHITTEST (видимо требуется для предыдущего сообщения) от системы бесполезно. Из-за этого 1С время от времени посылает сама себе WM_NCHITTEST через CallWindowProc(), откуда берется WM_SETCURSOR пока неясно. Под Вайном наблюдается только WM_NCHITTEST.
Очевидно дело не в последовательности сообщений. Под Вайном она такая же как под Виндосом. Можно подумать, что 1С не чувствует перехода с объекта на лист, хотя поведение всплывающих подсказок говорит об обратном.
Замечена разница в вызове оконной процедуры для окна схемы. Когда указатель двигается по объекту вызов делается по адресу 0x2704E070, когда вне объектов один раз обращение происходит по 0x15F14B40. Как это организовано пока не понятно.
Функция 0x27019060 возвращает 0 если указатель на листе и 1 в противном случае. Вызываемые при ее работе API-функции не вызывают подозрений. Возможно проблема возникает при работе конструктора отдельного элемента схемы.
Сергей, проблему надо решать для WINE@Etersoft 2.0, это никак в баге не отражено. Более того, тестирование проводилось для 1.0.12 по некоторым причинам...
Проблема решается именно для WINE@Etersoft 2.0
Пытаюсь найти информацию о размерах и положении отдельных элементов блок-схеvы. Судя по всему она лежит в какой-то из куч процесса. Возможно здесь выявится различие между Wine и Windows.
Замечено, что при вызове GetCursorPos() приложению отправляется WM_NCHITTEST, хотя для Win32 ничего такого нет. После исправления ничего не поменялось.
Решить проблему для W@E 2.0 Воспроизводить в любой 1С 8.2, способ воспроизведения описан тут: http://bugs.etersoft.ru/show_bug.cgi?id=7412#c1
wine@eter-2 bottle bugs/6575 WINE@Etersoft SQL 2.0.1-eter11/6 Принято. Фокус свободно переходит на любой элемент.