Ошибка в событии DN_HOTKEY

Здесь можно сообщить о найденных багах в Far.
Post Reply
IgorZ
Posts: 793
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Ошибка в событии DN_HOTKEY

Post by IgorZ »

Если нажатая клавиша и хоткей относятся одной раскладке, то приходит 2 сообщения на одно нажатие.
Если нажатая клавиша и хоткей из разных раскладок, то приходит 1 сообщение.
Обязательное условие: return false в обработчике события (то есть, отказ от обработки события Far-ом).
Скрипт для проверки (следует учитывать, что если нажимается клавиша с Alt, то всегда приходит символ из английской раскладки, даже если активна русская):

Проверено на Far.3.0.4392.x86.
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Ошибка в событии DN_HOTKEY

Post by John Doe »

Полагаю все заинтересованные увидели и первое сообщение, так что лучше записать на мантис.
Update Записал: http://bugs.farmanager.com/view.php?id=3036
IgorZ wrote: return false в обработчике события (то есть, отказ от обработки события Far-ом).
Эти true/false есть только в LuaFAR, причём присутствует некоторая неконсистентность в их трактовке.
Для однозначности я бы рекомендовал использовать 0.
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Ошибка в событии DN_HOTKEY

Post by John Doe »

Описанное поведение характерно для 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
Post Reply

Return to “Глюки и баги”