Bug 401

Summary: 1Cv77: Не отображаются графические значки окон в 1С
Product: WINE@Etersoft Reporter: Константин Кондратюк <kondratyuk>
Component: Графика GDI / DIB / GDIPLUSAssignee: Сергей Гуральник <serhio>
Status: CLOSED FIXED QA Contact: Сергей Тимушев <tsergey>
Severity: minor    
Priority: P2 CC: baraka, dtr, fe, kondratyuk, lav, night, serhio, shpigor, svzhu
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 95    
Bug Blocks: 760, 8500    
Attachments: Скрин

Description Константин Кондратюк 2006-11-24 17:53:09 MSK
В панели окон не отображаются графические значки окон, а только  
названия открытых окон
Comment 1 Vitaly Lipatov 2006-12-12 21:57:44 MSK
Отрисовка табов (из которых устроена панель окон) временно отключена (см. #95) из-за ошибки в передаче необходимых данных в приложение.
Comment 2 Илья Шпигорь 2010-11-27 11:23:44 MSK
Нужно проверить на eterhack >= 1.3.5
Comment 3 Максим Георгиевский 2011-01-04 19:27:43 MSK
Проверил на Edumandriva c eterhack 1.4, значки окон не отображаются.
Comment 4 Dmitry Trubin 2011-11-22 17:03:56 MSK
*** Bug 7303 has been marked as a duplicate of this bug. ***
Comment 5 Dmitry Trubin 2011-11-22 17:08:31 MSK
Бага #95 исправлена, теперь есть возможность включить отображение значков в
панели?
Воспроизводится повсюду.
Comment 6 Александр Морозов 2012-01-11 14:07:41 MSK
> Отрисовка табов (из которых устроена панель окон) временно отключена (см. #95)
> из-за ошибки в передаче необходимых данных в приложение.
А в каком конкретно патче она отключена?
Comment 7 Сергей Гуральник 2012-09-06 15:05:01 MSK
Проблема наблюдается до сих пор, причем и в оригинальном вайне. Интересно, что нативная comctl32 ничего не устраняет.
Comment 8 Сергей Гуральник 2012-09-06 18:11:36 MSK
По предварительным результатам проблема в DrawIconEx.
Comment 9 Сергей Гуральник 2012-09-07 10:39:12 MSK
(В ответ на comment #8)
> По предварительным результатам проблема в DrawIconEx.

Поправка: GetClassLongA() возвращает нулевой дескриптор иконки, 1С готова к такому повороту событий и поэтому рисует текст смещенным влево, используя место где должен быть значок.
Comment 10 Сергей Гуральник 2012-09-07 16:14:46 MSK
Сделал патч и тест по данной проблеме. Отправил на winehq , но возникли проблемы со сборко на 64-разрядной машие.
Comment 11 Сергей Гуральник 2012-09-07 18:01:05 MSK
(В ответ на comment #10)
> Сделал патч и тест по данной проблеме. Отправил на winehq , но возникли
> проблемы со сборко на 64-разрядной машие.

Исправил, отправил вновь.
http://www.winehq.org/pipermail/wine-patches/2012-September/117609.html
http://www.winehq.org/pipermail/wine-patches/2012-September/117619.html
Comment 12 Сергей Гуральник 2012-09-10 15:58:19 MSK
Провел дополнительное исследование поведения маленьких иконок в Windows. В случае игнорирования отправленных патчей есть чем их дополнить.
Comment 13 Сергей Гуральник 2012-09-11 14:11:33 MSK
(В ответ на comment #12)
> Провел дополнительное исследование поведения маленьких иконок в Windows. В
> случае игнорирования отправленных патчей есть чем их дополнить.

К моим патчам как всегда ноль внимания, поэтому полученные результаты пригодились. Расширил тест и решение, отправил вновь.
http://www.winehq.org/pipermail/wine-patches/2012-September/117688.html
http://www.winehq.org/pipermail/wine-patches/2012-September/117689.html
Comment 14 Сергей Гуральник 2012-09-19 17:13:11 MSK
(В ответ на comment #13)
> (В ответ на comment #12)
> > Провел дополнительное исследование поведения маленьких иконок в Windows. В
> > случае игнорирования отправленных патчей есть чем их дополнить.
> 
> К моим патчам как всегда ноль внимания, поэтому полученные результаты
> пригодились. Расширил тест и решение, отправил вновь.
> http://www.winehq.org/pipermail/wine-patches/2012-September/117688.html
> http://www.winehq.org/pipermail/wine-patches/2012-September/117689.html

Патчи все еще в очереди. Отправил напоминание в winehq.
Comment 15 Сергей Гуральник 2012-10-10 12:54:15 MSK
(В ответ на comment #14)
> Патчи все еще в очереди. Отправил напоминание в winehq.

Получил замечания по тесту, перерабатываю его.
Comment 16 Сергей Гуральник 2012-10-10 14:39:24 MSK
(В ответ на comment #15) 
> Получил замечания по тесту, перерабатываю его.

Отправил вновь.
Comment 17 Сергей Гуральник 2012-10-12 11:08:29 MSK
(В ответ на comment #16)
> (В ответ на comment #15) 
> > Получил замечания по тесту, перерабатываю его.
> 
> Отправил вновь.

Тест прошел. Чуть подпилил исправление и отправил повторно.
Comment 18 Сергей Гуральник 2012-10-16 12:01:35 MSK
(В ответ на comment #17)
> Тест прошел. Чуть подпилил исправление и отправил повторно.

Принято в WineHQ, но в eter-2.0.0 это исправление не помогает. Пытаюсь разобраться с причиной.
Comment 19 Сергей Гуральник 2012-10-16 17:09:29 MSK
(В ответ на comment #18)
> Принято в WineHQ, но в eter-2.0.0 это исправление не помогает. Пытаюсь
> разобраться с причиной.

Причина пока не ясна. GetClassLong() возвращающий иконку вообще не вызывается. Вероятно это регрессия вызванная каким-то из имеющихся хаков.
Comment 20 Сергей Гуральник 2012-10-17 18:18:47 MSK
Продолжаю выяснение причин. Пока продвижение весьма условное.
Comment 21 Сергей Гуральник 2012-10-18 14:31:39 MSK
(В ответ на comment #20)
> Продолжаю выяснение причин. Пока продвижение весьма условное.

Конкретнее: отрисовкой содержимого кнопки занимается MFC которая использует для этого определенную пользователем функцию. По непонятным причинам этого вызова не происходит. Вероятно придется ковырять исходники MFC42.
Comment 22 Сергей Гуральник 2012-10-18 16:01:49 MSK
On 2012-10-16 6:44, Bruno Jesus wrote:
    Hi, Sergey. I don't know if it's related, at least is related to icons but if possible could you take a look at bug http://bugs.winehq.org/show_bug.cgi?id=18578 

Задача тоже связана с иконками класса. Думаю стоит заняться. Лишний патч в winehq не помешает.
Comment 23 Сергей Гуральник 2012-10-24 15:44:28 MSK
(В ответ на comment #21)
> Конкретнее: отрисовкой содержимого кнопки занимается MFC которая использует для
> этого определенную пользователем функцию. По непонятным причинам этого вызова
> не происходит. Вероятно придется ковырять исходники MFC42.

Продолжаю поиски в этом направлении.
Comment 24 Сергей Гуральник 2012-11-01 13:23:13 MSK
(В ответ на comment #18)
> Принято в WineHQ, но в eter-2.0.0 это исправление не помогает. Пытаюсь
> разобраться с причиной.

Всё оказалось очень просто:

commit cd1bb1dc592e154c3c3fd222ea498604bd57befa
Author: Vitaly Lipatov <lav@etersoft.ru>
Date:   Mon Apr 28 12:29:13 2008 +0400

    Disable owner draw

Этот патч просто не дает возможности 1С нарисовать кнопку по своему усмотрению.
Comment 25 Vitaly Lipatov 2012-11-01 13:35:30 MSK
(В ответ на comment #24)
...
> commit cd1bb1dc592e154c3c3fd222ea498604bd57befa
> Author: Vitaly Lipatov <lav@etersoft.ru>
> Date:   Mon Apr 28 12:29:13 2008 +0400
> 
>     Disable owner draw
> 
> Этот патч просто не дает возможности 1С нарисовать кнопку по своему усмотрению.
Этот патч откатывайте, но надо проверить, что 1С после этого не падает при открытии нескольких окон.
Comment 26 Vitaly Lipatov 2012-11-01 13:36:05 MSK
Это было сделано из-за http://bugs.etersoft.ru/show_bug.cgi?id=95
Comment 27 Сергей Гуральник 2012-11-01 14:05:01 MSK
(В ответ на comment #25)
> Этот патч откатывайте, но надо проверить, что 1С после этого не падает при
> открытии нескольких окон.

Вроде-бы всё гладко, как в eter-2.0.0 так и в eterhack. Отправил патчи.
Comment 28 Сергей Гуральник 2012-11-12 10:33:09 MSK
Патчи приняты.
Задача решена в WINE@Etersoft SQL 2.0.2-eter19/4
Comment 29 Сергей Тимушев 2012-11-14 15:14:59 MSK
Created attachment 2682 [details]
Скрин
Comment 30 Сергей Тимушев 2012-11-14 15:15:26 MSK
1C:предприятие 7.7
Конфигурация:
Бухгалтерия учет, редакция 4.5

WINE@Etersoft SQL 2.0.2-eter20/4

Все иконки отображаются. см скрин
Comment 31 Сергей Тимушев 2012-11-14 15:15:49 MSK
1C:предприятие 7.7
Конфигурация:
Бухгалтерия учет, редакция 4.5

WINE@Etersoft SQL 2.0.2-eter20/4

Все иконки отображаются. см скрин
Comment 32 Сергей Тимушев 2012-11-14 15:17:05 MSK
Бага исправлена
Comment 33 Сергей Гуральник 2012-11-14 17:17:19 MSK
Заметил "косметический" дефект - иконка и текст рисуются на белом фоне. Чисто визуально это несколько неприятно. Пишу тест для выяснения причин.
Comment 34 Сергей Гуральник 2012-11-15 17:42:40 MSK
(В ответ на comment #33)
> Заметил "косметический" дефект - иконка и текст рисуются на белом фоне. Чисто
> визуально это несколько неприятно. Пишу тест для выяснения причин.

С comctl32=n проблемы нет, очевидно искать нужно в реализации табов. Продолжаю поиск.
Comment 35 Сергей Гуральник 2012-11-22 16:39:04 MSK
(В ответ на comment #34)
> С comctl32=n проблемы нет, очевидно искать нужно в реализации табов. Продолжаю
> поиск.

Очевидно где-то перед вызовом пользовательской функции отрисовки пропущен вызов SetBkColor(). Выясняю детали.
Comment 36 Сергей Гуральник 2012-12-18 19:23:21 MSK
Фон становится белым во время обработки WM_DRAWITEM родителем таба. Подозрения на то, что виноваты DrawIconEx или ExtTextOut не подтвердились.
Comment 37 Vitaly Lipatov 2014-09-12 02:54:30 MSK
Закрываем баги, принятые более года назад, и до сих пор не закрытые.