Bug 3735

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
Бутылка : consultant/const3300.35
ProgramFiles/Consult2008/
wine cons.exe
В стартовом меню выбираем пункт "Карточка поиска" -> на появившемся окне внизу слева надпись : "Установленные информационные банки". См. скрины.
Comment 1 Глеб Кордюков 2009-03-26 18:24:53 MSK
Created attachment 1121 [details]
Как это выглядит на Линуксе
Comment 2 Глеб Кордюков 2009-03-26 18:27:50 MSK
Created attachment 1122 [details]
Как это выглядит на Windows
Comment 3 Глеб Кордюков 2009-03-26 18:29:51 MSK
При этом если выполнить поиск по любой сроке в карте поиска. то название сменится на "Результаты поиска" и будет прорисовываться корректно.
Comment 4 Илья Шпигорь 2009-04-01 16:18:55 MSD
Выложил патч.

Проблема заключается в том, что Консультант перед выводом строк вызывает DrawTextExW с флагом DT_CALCRECT, чтобы определить rect необходимый для вывода текста. DrawTextExW, когда считает размер этого rect, зачем-то ориентируется на его размеры, которые были переданны в фукцию.

В случае с консультантом в DrawTextExW передается rect (0,0)-(1,1). Поэтому DrawTextExW считает, что в каждую строчку поместиться только одна буква и возвращает rect с размером (0,0)-(14,825), т.е. вытянутый по высоте.

Патч изменяет поведение DrawTextExW. Теперь если установлен флаг DT_CALCRECT размер rect определяется по длине слова, полученного после переноса функцией TEXT_WordBreak.
Comment 5 Глеб Кордюков 2009-04-10 15:48:13 MSD
проверил на 1.0.10
Всё работает корректно.