Проблема с DN_LISTHOTKEY

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Проблема с DN_LISTHOTKEY

Post by John Doe »

Хочу самостоятельно обработать DN_LISTHOTKEY.
Изменяю позицию посылая DM_LISTSETCURPOS, и возвращаю TRUE, т.к. сам обработал событие. Но не получается.
Вот код:

Code: Select all

local F = far.Flags
far.Dialog("",0,0,20,6,nil,{{"DI_LISTBOX",3,1,16,5,{{Text="&atext"},{Text="&btext"},{Text="&ctext"}},nil,nil,"DIF_LISTNOAMPERSAND"}},0,function(hDlg,Msg,Param1,Param2)
  if Msg==F.DN_LISTHOTKEY then
    hDlg:send("DM_LISTSETCURPOS",1,{SelectPos=3})
    far.AdvControl("ACTL_WAITKEY")
    return 1
  end
end)
Список из трёх элементов, жму 'b', и вижу что курсор переместился на третий элемент, т.е. DM_LISTSETCURPOS сработало.
Но после этого курсор почему-то возвращается обратно.

Смотрю что же приходит в мой обработчик:

Code: Select all

DN_CONTROLINPUT: table: 0x0d212618
DN_LISTHOTKEY: 2
DN_LISTCHANGE: 3
DN_LISTCHANGE: 3
Видно, что DN_LISTCHANGE с Param2==3 приходит 2 раза, что явно неправильно.C

Update: http://bugs.farmanager.com/view.php?id=3039
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Проблема с DN_LISTHOTKEY

Post by Alexey Samlyukov »

смотрю исходники advcmp, то я там на DN_LISTHOTKEY возвращаю false.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Проблема с DN_LISTHOTKEY

Post by John Doe »

Alexey Samlyukov wrote: я там на DN_LISTHOTKEY возвращаю false.
FALSE - разрешить изменение.
В результате выполняется стандартная обработка, и курсор устанавливается на пункт соответствующий горячей клавише.
А вовсе не на тот пункт, который хочу я.
Post Reply

Return to “Разработка плагинов”