Описанное поведение характерно для DI_CHECKBOX, а у DI_TEXT свои странности:
Code: Select all
local F = far.Flags
local Items = {
{F.DI_DOUBLEBOX,3, 1,20, 4,0,0,0,0,"Test hotkeys in dialog"},
{F.DI_TEXT, 5, 2, 0, 2,2,0,0,0,"text &a"},
{F.DI_TEXT, 5, 3, 0, 3,2,0,0,0,"text &b"},
}
far.Dialog("",-1,-1,22,6,nil,Items,nil,function(hDlg,Msg,Param1,Param2)
if Msg==F.DN_HOTKEY then
far.Message("Hotkey: "..tostring(Param2.UnicodeChar))
return 1
end
end)
В этом примере важно, чтобы обработчик наоборот, вернул TRUE.
При этом я наблюдаю, что для первого элемента всегда приходит 2 сообщения, а для второго — одно.
(От раскладки ничего не зависит.)
Edit нашёл закономерность: 2 сообщения приходят для любого
нефокусируемого элемента, если только он не последний в диалоге.
http://bugs.farmanager.com/view.php?id=3037