Wine@Etersoft 1.0 CAD 1.1.0-eter5/4 1. Запустить КОМПАС 2. Сервис - Менеджер библиотек - внизу появляется менеджер библиотек 3. Даблклик по Электрика и электроника в правом окне менеджера библиотек 4. Даблклик по библиотека конвертеров... (верхняя библиотека) - библиотека подключается и открываются ее команды на новой вкладке 5. Перейти на вкладку Библиотеки КОМПАС менеджера Ожидаемый результат: в чекбоксе рядом с Библиотека конвертеров... взведена красная галочка т.к. библиотека подключена Фактически: галочки нет.
В этом менеджере библиотек используется стандартный listview контрол. При включении библиотеки, приложение посылает сообщение с LVM_SETITEMW, в котором указывается новая иконка (т.е. картинка checkbox'а). Ошибка возникла из-за того, что приложение посылает неверную иконку. Запросил тестовый пример у АСКОН'а.
В качестве временного решения можно отключить фиксацию окна "менеджер библиотек". После этого бага не воспроизводится. Если после добавления библиотеки переключиться обратно и попробовать добавить ее снова, будет выведено сообщение: "Библиотека "..." уже подключена. Повторное подключение не выполняется." После этого все иконки отрисуются корректно. Вряд ли это ошибка с comctl32 контролами. Тестировал на native comctl32 - воспроизводится.
При использовании любого режима открытия библиотеки, кроме "Панель", ошибка не проявляется.
Ошибка связана с передачей фокуса. Если есть окно имеющее фокус и его родитель становится невидимым, то фокус должен оставаться у этого окна. В wine в этой же самой ситуации фокус передается окну-родителю, по отношению к скрываемому окну. В Компасе это приводит к тому, что один из BCG контролов получает фокус и совершает какие-то действия. Результатом этих действий становится неверная отрисовка иконок. Для проверки патча сделал тест. Отправил все на winehq.
Выложил патч без теста в нашу рассылку.
Патч приняли в оригинальный wine.