Меня смутило то, что в описании PanelInfo этот хендл неудачно назван описателем плагина. Теперь буду знать, спасибо.
А с другой стороны, разве мою задачу нельзя решить проще?
В описании PanelControl вроде бы недвусмысленно разрешают в качестве описателя использовать константы PANEL_ACTIVE/PANEL_PASSIVE.
Поэтому мне не очень непонятно, зачем в LuaFAR два отдельных параметра (handle, whatpanel), когда можно было бы использовать один.
Или нельзя? Во всяком случае у меня константы PANEL_ACTIVE/PANEL_PASSIVE работают.
Формат и содержание описателя не важны для Far Manager'а - они могут быть, к примеру, адресом внутреннего объекта плагина, или адресом структуры с данными плагина, или любым другим уникальным идентификатором, отличным от нуля.
Из этого вытекает, что если панели принадлежат разные плагинам, то их описатели могут не быть уникальны.
Следовательно использовать этот описатель вне плагина как минимум ненадёжно (если вообще возможно).
panel.GetPanelInfo (handle, whatpanel)
После вчерашнего фикса функция требует первых аргументом значение типа uservalue.
Подозреваю что это поломалось случайно, поскольку в Энциклопедии сказано:
https://api.farmanager.com/ru/service_functions/panelcontrol.html wrote:hPanel
Текущий описатель панели. При запросе информации относительно активной панели установите этот параметр равным PANEL_ACTIVE, для пассивной - PANEL_PASSIVE. Это позволяет использовать эту функцию в командах плагина без создания новой панели. Также PANEL_ACTIVE(PANEL_PASSIVE) можно использовать для неплагиновой панели.
- Данное изменение не было случайным, а вполне намеренным.
- Энциклопедия в данном случае не определяющий документ, смотреть надо в мануале LuaFAR. (Да, там не сказано прямо "userdata").
- Если 1-й аргумент был number, и это работало, то только благодаря "чётному количеству багов". Теперь стало нечётным.
John Doe wrote: ↑Tue 31 Dec, 2019 11:24
Теперь вы объяснили, но из changelog этого не следует:
Данное изменение относится к пункту 2 в чейнжлоге.
Насчёт вашего предложения по модификации данного API (кажется есть и тикет на мантисе), то проблема видимо именно в трудности сделать это совместимым образом.