View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003766 | Wishes.Plugins | LuaMacro / Macro Browser | public | 2020-01-20 12:49 | 2020-02-01 07:58 |
Reporter | JohnDoe | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | N/A |
Status | new | Resolution | open | ||
Platform | x86 | OS | Windows | OS Version | XP SP3 |
Product Version | 3.0 | ||||
Summary | 0003766: LuaFAR: упростить использование panel.SetSelection / panel.ClearSelection | ||||
Description | После билда 698 простой вызов panel.SetSelection необходимо заменить на серию команд:
Необходимость BeginSelection/EndSelection для отдельных сценариев понятна, но в большинстве случаев это избыточно, и лишь загромождает код. Предлагаю добиться требуемой гибкости совместимым образом не требующим изменений в плагинах и макросах. Например: 1) Дать возможность panel.SetSelection за один вызов и устанавливать, и снимать выделение. 2) Альтернативно: если вызову не предшествует (незакрытый) вызов BeginSelection, то работать по старому (т.е. прятать всю требуемую "обвязку" внутри) | ||||
Additional Information | https://forum.farmanager.com/viewtopic.php?p=158452#p158452 | ||||
Tags | No tags attached. | ||||
|
Даже не так, а так: panel.BeginSelection(nil,panel) panel.SetSelection(nil,panel,itm0,false) panel.SetSelection(nil,panel,itm1,true) panel.EndSelection(nil,panel) panel.RedrawPanel(nil,panel) , чтобы выделение работало правильно всегда - где itm0,itm1 = {cleared indexes},{set indexes} , т.е. panel.SetSelection() можно было бы дополнить аргументами и перенести код в dll. Чтобы не ломать существующий API, вариант предлагал следующий: panel.SetSelection(nil,panel,itm1,true,itm0,false) = panel.SetSelection(nil,panel,itm1,true,itm0), выполняющий внутри себя последовательность из 5-и вызовов выше. Впрочем, Redraw можно и не включать, если видятся противопоказания. Обсуждалось 16.08.19 на руборде. |