Summary: | Консультант : Прорисовка надписи в "Карточке поиска" | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Глеб Кордюков <sonner> |
Component: | Окна / фокус / перерисовка | Assignee: | Илья Шпигорь <shpigor> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | major | ||
Priority: | P4 | ||
Version: | 1.0.10 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 767, 3962 | ||
Attachments: |
Как это выглядит на Линуксе
Как это выглядит на Windows |
Description
Глеб Кордюков
2009-03-26 18:23:36 MSK
Created attachment 1121 [details]
Как это выглядит на Линуксе
Created attachment 1122 [details]
Как это выглядит на Windows
При этом если выполнить поиск по любой сроке в карте поиска. то название сменится на "Результаты поиска" и будет прорисовываться корректно. Выложил патч. Проблема заключается в том, что Консультант перед выводом строк вызывает DrawTextExW с флагом DT_CALCRECT, чтобы определить rect необходимый для вывода текста. DrawTextExW, когда считает размер этого rect, зачем-то ориентируется на его размеры, которые были переданны в фукцию. В случае с консультантом в DrawTextExW передается rect (0,0)-(1,1). Поэтому DrawTextExW считает, что в каждую строчку поместиться только одна буква и возвращает rect с размером (0,0)-(14,825), т.е. вытянутый по высоте. Патч изменяет поведение DrawTextExW. Теперь если установлен флаг DT_CALCRECT размер rect определяется по длине слова, полученного после переноса функцией TEXT_WordBreak. проверил на 1.0.10 Всё работает корректно. |