local function getSelection(p,pInfo) if pInfo.SelectedItemsNumber==1 then local item = panel.GetSelectedPanelItem(p,nil,1) return band(item.Flags,F.PPIF_SELECTED)~=0 and {item.FileName} elseif pInfo.SelectedItemsNumber>0 then local Sel = {} for i=1,pInfo.SelectedItemsNumber do Sel[i] = panel.GetSelectedPanelItem(p,nil,i).FileName end return Sel end end local function setSelection(p,Sel) if not Sel then return end local idx = {} for i=1,panel.GetPanelInfo(p).ItemsNumber do local FileName = panel.GetPanelItem(p,nil,i).FileName for j=1,#Sel do if Sel[j]==FileName then idx[#idx+1]=i end end end panel.BeginSelection(p) panel.SetSelection(p,nil,idx,true) --https://bugs.farmanager.com/view.php?id=3766 panel.EndSelection(p) --panel.RedrawPanel(p) end |