View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002622 | Far Manager | Plugins API.Dialog | public | 2014-03-15 15:20 | 2021-08-24 12:06 |
Reporter | shmuel | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | always |
Status | new | Resolution | open | ||
Platform | x86 | OS | Windows | ||
Product Version | 3.0 | ||||
Target Version | 3.0 | ||||
Summary | 0002622: Неправильный вывод текста в элементах DI_TEXT (два бага) | ||||
Description | Баг 1: флаг DIF_CENTERTEXT центрирует текст не в элементе, а в диалоге. Баг 2: если у элемента задать X2 нулём, а текст задать достаточно длинный, то текст усекается до одного символа. | ||||
Steps To Reproduce | local function f(n) return ("a"):rep(n) end local items = { { "DI_TEXT",1,1,30,1, 0,0,0, "DIF_CENTERTEXT",f(5) }, { "DI_TEXT",1,2,10,2, 0,0,0, "DIF_CENTERTEXT",f(5) }, { "DI_TEXT",1,3, 0,3, 0,0,0, 0, f(48) }, { "DI_TEXT",1,4, 0,4, 0,0,0, 0, f(49) }, } far.Dialog ("",-1,-1,50,5,nil,items,0) | ||||
Tags | No tags attached. | ||||
Build | |||||
|
С первым согласен, по второму - что ожидается при указанных некорректных координатах (о чем в Энц. описано)? |
|
В Энциклопедии для DI_TEXT описано следующее (см. замечание 5): > Если не указан флаг DIF_CENTERTEXT, то Far Manager самостоятельно перерасчитает > координаты X2 и Y2, исходя из размера строки и размера диалога. Это значит, что заданная координата X2 не имеет значения, а значение имеют размер строки и ширина диалога. В приведенном примере для нижнего элемента длина строки = 49. Ширина диалога = 50. С какого перепуга результирующая строка урезалась до одного символа? Из чего исходил при этом Far: из размера строки или из размера диалога? |
|
Баг №3. Неправильно усекается текст при изменении длины поля DI_TEXT - координаты X2. Если X2 увеличивать, увеличивая длину поля до 1.5 раз, то текст усекается ещё больше. Пример - диалоги копирования/переименования F5/F6, ширина рамки диалога увеличена ДО увеличения ширины поля DI_TEXT. Баг замечен при использовании скрипта Dialog.Maximize.moon - если заменить на добавляя масштабирование DI_TEXT с длинным именем копируемого файла, то имя файла усекается неверно.Недоработка №4. При DM_RESIZEDIALOG не выполняется пересоздание строк DI_TEXT с Х2=Х4 с учётом новой ширины диалога. А если X2!=X4, то усекается неверно (Баг №3). |