View Issue Details

IDProjectCategoryView StatusLast Update
0001515Far ManagerPanelpublic2010-09-23 11:34
ReporterMaximus Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
Platformx86OSWindowsOS VersionXP SP2
Product Version2.0 
Summary0001515: FCTL_UPDATEPANEL и плагин Network
DescriptionПлагин может поменять свои флаги (OpenPluginInfo.Flags) во время выполнения GetFindData.
Это приводит к непоявлению элемента ".." на панели плагина, при его открытии как:
net:\\server
Причем, под отладчиком видна забавная ситуация: панель плагина перерисовывается ДВА раза,
первый раз элемент ".." присутствует, а во втором его уже нет.

Лечится в Far добавлением строки в FileList::UpdatePlugin

if (!CtrlObject->Plugins.GetFindData(hPlugin,&PanelData,&PluginFileCount,0))
{
...
}
+ CtrlObject->Plugins.GetOpenPluginInfo(hPlugin,&Info);
int PrevSelFileCount=SelFileCount;

то есть после получения GetFindData приходится повторно получать флаги.


PS. Другое дело, должен ли плагин Network вызывать FCTL_UPDATEPANEL в то время,
когда он обрабатывает GetFindData. Наверное - не должен.
И как должен Far реагировать на получение FCTL_UPDATEPANEL в то время,
когда он УЖЕ выполняет FileList::UpdatePlugin. Вопрос спорный... Ведь
та UpdatePlugin, которая была ранее отобразит "старые" данные - вторая UpdatePlugin
УЖЕ обновила и показала панель.


Steps To ReproduceПервый запуск плагина Network. Если уже запускался - unload: и load:

Вводим команду
net:\\server
Enter

получаем панель без ".."

в настройке плагина флажок снят:
[ ] Show .. in the providers
Additional InformationСтек вызовов.
far.exe!FileList::UpdatePlugin(int KeepSelection=0, int IgnoreVisible=0) Line 673 C++
far.exe!FileList::Update(int Mode=0) Line 93 C++
far.exe!Panel::SetPluginCommand(int Command=2, int Param1=0, long Param2=0) Line 2424 + 0x19 bytes C++
far.exe!FarControl(void * hPlugin=0x00221868, int Command=2, int Param1=0, long Param2=0) Line 1445 + 0x14 bytes C++
Network.dll!NetBrowser::GotoComputer(const wchar_t * Dir=0x0013461c) Line 2027 C++
Network.dll!NetBrowser::GetFindData(PluginPanelItem * * pPanelItem=0x00134c98, int * pItemsNumber=0x00134c8c, int OpMode=0) Line 344 C++
Network.dll!GetFindDataW(void * hPlugin=0x00221868, PluginPanelItem * * pPanelItem=0x00134c98, int * pItemsNumber=0x00134c8c, int OpMode=0) Line 128 C++
far.exe!PluginW::GetFindData(void * hPlugin=0x00221868, PluginPanelItem * * pPanelItem=0x00134c98, int * pItemsNumber=0x00134c8c, int OpMode=0) Line 1112 + 0xad bytes C++
far.exe!PluginManager::GetFindData(void * hPlugin=0x03317e30, PluginPanelItem * * pPanelData=0x00134c98, int * pItemsNumber=0x00134c8c, int OpMode=0) Line 1007 + 0x2a bytes C++
far.exe!FileList::UpdatePlugin(int KeepSelection=0, int IgnoreVisible=0) Line 684 + 0x2b bytes C++
far.exe!FileList::Update(int Mode=0) Line 93 C++
far.exe!FileList::DisplayObject() Line 86 + 0x19 bytes C++



TagsNo tags attached.
Build

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2010-09-23 11:34 Maximus New Issue