View Issue Details

IDProjectCategoryView StatusLast Update
0003039Far ManagerPlugins API.Dialogpublic2015-07-30 15:35
ReporterJohnDoe Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
Product Version3.0 
Summary0003039: В DN_LISTHOTKEY невозможно изменить позицию
DescriptionСказано:
Return
  FALSE - разрешить изменение.
  TRUE - плагин сам отработал событие.

В обработчике пытаюсь использовать DM_LISTSETCURPOS для установки позиции, и возвращаю 1.
Ожидаю, что позиция курсора изменится, однако этого не происходит.
Steps To Reproducelocal 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)


Если раскомментировать ACTL_WAITKEY, то можно заметить, что DM_LISTSETCURPOS отрабатывает нормально, но после этого фар зачем-то возвращает курсор в исходную позицию.
Additional InformationПоследовательность событий, принимаемых обработчиком, такая:
DN_CONTROLINPUT: table: 0x0d212618
DN_LISTHOTKEY: 2
DN_LISTCHANGE: 3
DN_LISTCHANGE: 3

Видно, что DN_LISTCHANGE с Param2==3 приходит 2 раза, что явно неправильно.

local F = far.Flags
local DN = {}
for k,v in pairs(F) do if k:match"DN_" then DN[v] = k end end
local ignore = {[F.DN_ENTERIDLE]=1,[F.DN_DRAWDIALOG]=1,[F.DN_DRAWDIALOGDONE]=1,[F.DN_DRAWDLGITEM]=1,[F.DN_DRAWDLGITEMDONE]=1,[F.DN_CTLCOLORDIALOG]=1,[F.DN_CTLCOLORDLGLIST]=1,}
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 not ignore[Msg] then
    win.OutputDebugString(("%s: %s"):format(DN[Msg] or Msg,tostring(Param2)))
  end
  if Msg==F.DN_LISTHOTKEY then
    hDlg:send("DM_LISTSETCURPOS",1,{SelectPos=3})
    far.AdvControl("ACTL_WAITKEY")
    mf.beep()
    return 1
  end
end)
TagsNo tags attached.
Build

Issue History

Date Modified Username Field Change
2015-07-30 15:34 JohnDoe New Issue
2015-07-30 15:35 JohnDoe Note Added: 0013726