Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 595 - Налогоплательщик ЮЛ: Неправильная отрисовка поля выбора   Make a simular bug
Summary: Налогоплательщик ЮЛ: Неправильная отрисовка поля выбора
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Графика GDI / DIB / GDIPLUS (show other bugs)
Version: 1.0.9
Hardware: Other All
: P5 minor
Target Milestone: ---
Assignee: Илья Шпигорь
QA Contact: Денис Баранов
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 777 3932 4267 6917 7036
  Show dependency treegraph
 
In work:
Reported: 2007-05-30 15:38 MSD by Синицын Иван
Modified: 2011-03-22 16:45 MSK (History)
5 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments
неправильная отрисовка (133.41 KB, image/jpeg)
2010-11-18 03:58 MSK, Синицын Иван
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Синицын Иван 2007-05-30 15:38:07 MSD
Описание проблем с налогоплательщиком ЮЛ 407:

1. Не вводятся русские буквы, латиница вводится нормально

2. Иногда обрезаются подсказки

3. установка проходит нормально при установках winecfg = 98, при XP выдает ошибку "1607:Не удается установить InstallShield Scripting Runtime" и прекращает установку.

4. Неправильная отрисовка. см. скриншот.
Comment 1 Синицын Иван 2007-06-07 17:41:35 MSD
При запуске с установкой в настройках (win98), в последней сборке (07.06.2007) в SUSE проблема с вводом русских букв не проявилась.

Замечено что текст в подсказке обрезается, в том случае если текст этой подсказки больше чем размер последней показанной, в этом случае текст обрезается под размер предыдушей подсказки.
Comment 2 Vitaly Lipatov 2007-06-11 21:13:38 MSD
Приветствуются результаты тестирования от заинтересованных лиц
Comment 3 Синицын Иван 2007-06-13 11:36:53 MSD
Еще проблема: Программа не закрывается при щелчке на крестик, можно закрыть только с помощью соответствующего пункта меню.
Comment 4 Константин Кондратюк 2007-06-22 16:23:20 MSD
"
устанавливается, запускается, но формы принять
не может, говорит что то вроде ошибки открытия cab файла
"
У меня при проверке не проявилось...
Comment 5 Vitaly Lipatov 2007-07-07 14:42:21 MSD
Актуальная запись здесь одна - про неправильную отрисовку. Вот её надо решить.
Comment 6 Vladimir Kozlov 2007-08-08 21:52:38 MSD
Там случайно не из пакета EhLib использован комбобокс? Я заметил что EhLib-овский комбобокс периодически либо не прорисовывает выбранный пункт вообще либо прорисовывает похожим образом. 
Comment 7 Анатолий Лютин 2007-08-23 11:16:11 MSD
И ещё в этом контроле скролл не работает.
Comment 8 Денис Баранов 2008-08-13 12:02:02 MSD
При перемещении окон остается пунктирный след, как в 1С8.1.

Ошибка с отрисовкой поля осталась.
Comment 9 Илья Шпигорь 2008-08-20 13:41:49 MSD
Ошибка с неправильной отрисовкой проявляется в следующем случае. В выпадающем списке выбирается строка длиннее чем контрол в который она вставляется. Затем после перекрытия этого контрола и соседних другим окном, получаем такую отрисовку. 
Comment 10 Илья Шпигорь 2008-08-22 15:20:44 MSD
Судя по backtrace на вывод текста в контрол: 

=>1 0x7ef00c30 DrawTextExW
  2 0x7ef027f1 DrawTextA+0x61
  3 0x0c0365d9 in vfp8r (+0x365d9) (0x0032c618)

Можно предположить, что он, возможно, из библиотеки Visual Fox Pro. 
Comment 11 Илья Шпигорь 2008-08-25 10:27:06 MSD
Возможное решение - проверять в функции TEXT_NextLineW помещается ли выводимый текст в контрол. Если нет, то корректировать его длину до размера контрола.

На это решение сделал патч.
Comment 12 Илья Шпигорь 2008-08-28 12:38:54 MSD
Патч на отрисовку поля выслал. Было бы неплохо его потестить.
Comment 13 Денис Баранов 2008-08-29 09:44:16 MSD
Проверил с патчем, ошибка не воспроизвелась.
Comment 14 Денис Баранов 2008-09-16 17:49:33 MSD
На текущей версии не воспроизвелось.
libwine-1.0.9-alt20
wine-etersoft-sql-1.0.9-alt5
wine-1.0.9-alt20
Comment 15 Илья Шпигорь 2009-09-22 14:27:10 MSD
Выложил патч и реверт на #595 багу.

Дело в том, что текст отрисовывается абсолютно корректно. Проблема с отрисовкой фона.

Если при вызове DrawTextEx не указан флаг DT_NOCLIP - это означает, что текст должен обрезаться по размерам переданного в функцию rect'а. Как видно из скриншотов - это и происходит. Текст обрезается, а его фон отрисовывается без обрезания.

Функция DrawTextEx, по-сути, обертка для ExtTextOutW, в которой флаг ETO_CLIPPED - определяет надо ли обрезать текст.

Решение заключается в добавлении проверки на флаг ETO_CLIPPED в расчете размера фона для отрисовываемого текста. Если флаг установлен, то фон обрезается по переданному в функцию rect'у. Если переданный в функцию rect больше, чем занимает текст - размер фона определяется размером текста.
Comment 16 Andrey Vusik 2009-09-24 19:24:28 MSD
WINE@Etersoft 1.0 SQL 1.0.11-eter8.3/4

All's working correctly.