View Issue Details

IDProjectCategoryView StatusLast Update
0000570Far ManagerPanelpublic2008-07-19 05:41
Reporterchupakabra Assigned Tovskirdin  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Fixed in Version1.80 alpha 1 
Summary0000570: Вычисление текущего каталога для плагина с OPIF_REALNAMES
DescriptionДля плагина с OPIF_REALNAMES текущий каталог вычисляется на основе текущего элемента на панели, а OpenPluginInfo.CurDir игнорируется. Это в частности создает проблемы такого рода: http://forum.farmanager.com/viewtopic.php?p=33922#p33922
Прилагается патч.
TagsNo tags attached.
Build529

Activities

2008-07-03 09:01

 

flshow.cpp.diff (1,852 bytes)   
*** flshow.cpp	Thu Jul  3 18:48:19 2008
--- flshow.cpp.new	Thu Jul  3 18:16:28 2008
*************** void FileList::ShowFileList(int Fast)
*** 314,343 ****
  
    if (PanelMode==PLUGIN_PANEL && FileCount>0 && (Info.Flags & OPIF_REALNAMES))
    {
!     struct FileListItem *CurPtr=ListData[CurFile];
!     if (!TestParentFolderName(CurPtr->strName))
!     {
!       strCurDir = CurPtr->strName;
  
!       wchar_t *NamePtr = strCurDir.GetBuffer ();
  
!       NamePtr = wcsrchr(NamePtr,L'\\');
  
!       if (NamePtr!=NULL && NamePtr!=strCurDir) //BUGBUG, bad
!       {
!         if (*(NamePtr-1)!=L':')
!           *NamePtr=0;
!         else
!           *(NamePtr+1)=0;
!       }
  
!       strCurDir.ReleaseBuffer ();
! 
!       if (GetFocus())
!       {
!         CtrlObject->CmdLine->SetCurDir(strCurDir);
!         CtrlObject->CmdLine->Show();
        }
      }
    }
  
--- 314,349 ----
  
    if (PanelMode==PLUGIN_PANEL && FileCount>0 && (Info.Flags & OPIF_REALNAMES))
    {
!     struct OpenPluginInfo Info;
!     GetOpenPluginInfo(&Info);
!     if (*Info.CurDir) {
!       strCurDir = Info.CurDir;
!     }
!     else {
!       struct FileListItem *CurPtr=ListData[CurFile];
!       if (!TestParentFolderName(CurPtr->strName))
!       {
!         strCurDir = CurPtr->strName;
  
!         wchar_t *NamePtr = strCurDir.GetBuffer ();
  
!         NamePtr = wcsrchr(NamePtr,L'\\');
  
!         if (NamePtr!=NULL && NamePtr!=strCurDir) //BUGBUG, bad
!         {
!           if (*(NamePtr-1)!=L':')
!             *NamePtr=0;
!           else
!             *(NamePtr+1)=0;
!         }
  
!         strCurDir.ReleaseBuffer ();
        }
+     }
+     if (GetFocus())
+     {
+       CtrlObject->CmdLine->SetCurDir(strCurDir);
+       CtrlObject->CmdLine->Show();
      }
    }
  
flshow.cpp.diff (1,852 bytes)   

vskirdin

2008-07-04 01:56

administrator   bugnote:0001659

просьба прояснить что делает патч
1) что было до патча
2) как оно исправилось после
3) если патч будет принят, то могу ли я аналогичное изменение сделать в 1.71?

chupakabra

2008-07-04 03:57

developer   bugnote:0001660

Проще всего посмотреть на примере плагина, на который есть ссылка в описании. При копировании файла с панели Фара на панель плагина Фар копирует его в подкаталог на панели Фара с именем текущего объекта на панели плагина. Это происходит из-за того, что неправильно определяется текущий каталог на панели плагина, а именно вместо использования OpenPluginInfo.CurDir Фар пытается выделить путь из текущего элемента на панели плагина.
В 1.71 тоже нужно внести изменения, т.к. там такая же проблема.

2008-07-04 04:16

 

flshow.cpp_2.diff (1,784 bytes)   
*** flshow.cpp	Fri Jul  4 14:15:10 2008
--- flshow.cpp.new	Fri Jul  4 14:11:05 2008
*************** void FileList::ShowFileList(int Fast)
*** 314,343 ****
  
    if (PanelMode==PLUGIN_PANEL && FileCount>0 && (Info.Flags & OPIF_REALNAMES))
    {
!     struct FileListItem *CurPtr=ListData[CurFile];
!     if (!TestParentFolderName(CurPtr->strName))
!     {
!       strCurDir = CurPtr->strName;
  
!       wchar_t *NamePtr = strCurDir.GetBuffer ();
  
!       NamePtr = wcsrchr(NamePtr,L'\\');
  
!       if (NamePtr!=NULL && NamePtr!=strCurDir) //BUGBUG, bad
!       {
!         if (*(NamePtr-1)!=L':')
!           *NamePtr=0;
!         else
!           *(NamePtr+1)=0;
!       }
  
!       strCurDir.ReleaseBuffer ();
! 
!       if (GetFocus())
!       {
!         CtrlObject->CmdLine->SetCurDir(strCurDir);
!         CtrlObject->CmdLine->Show();
        }
      }
    }
  
--- 314,347 ----
  
    if (PanelMode==PLUGIN_PANEL && FileCount>0 && (Info.Flags & OPIF_REALNAMES))
    {
!     if (*Info.CurDir) {
!       strCurDir = Info.CurDir;
!     }
!     else {
!       struct FileListItem *CurPtr=ListData[CurFile];
!       if (!TestParentFolderName(CurPtr->strName))
!       {
!         strCurDir = CurPtr->strName;
  
!         wchar_t *NamePtr = strCurDir.GetBuffer ();
  
!         NamePtr = wcsrchr(NamePtr,L'\\');
  
!         if (NamePtr!=NULL && NamePtr!=strCurDir) //BUGBUG, bad
!         {
!           if (*(NamePtr-1)!=L':')
!             *NamePtr=0;
!           else
!             *(NamePtr+1)=0;
!         }
  
!         strCurDir.ReleaseBuffer ();
        }
+     }
+     if (GetFocus())
+     {
+       CtrlObject->CmdLine->SetCurDir(strCurDir);
+       CtrlObject->CmdLine->Show();
      }
    }
  
flshow.cpp_2.diff (1,784 bytes)   

chupakabra

2008-07-04 04:20

developer   bugnote:0001661

Сейчас заметил что некоторые строчки в патче были лишними, т.к. GetOpenPluginInfo() уже вызывается ранее в FileList::ShowFileList(). Загрузил flshow.cpp_2.diff.

vskirdin

2008-07-04 07:00

administrator   bugnote:0001662

1.8x - 529
1.7x - 2411

chupakabra

2008-07-06 14:27

developer   bugnote:0001663

Проверил - работает.

Issue History

Date Modified Username Field Change
2008-07-03 09:01 chupakabra New Issue
2008-07-03 09:01 chupakabra File Added: flshow.cpp.diff
2008-07-04 01:54 vskirdin Status new => assigned
2008-07-04 01:54 vskirdin Assigned To => vskirdin
2008-07-04 01:56 vskirdin Note Added: 0001659
2008-07-04 03:57 chupakabra Note Added: 0001660
2008-07-04 04:16 chupakabra File Added: flshow.cpp_2.diff
2008-07-04 04:20 chupakabra Note Added: 0001661
2008-07-04 07:00 vskirdin Note Added: 0001662
2008-07-04 07:00 vskirdin Status assigned => feedback
2008-07-06 14:27 chupakabra Note Added: 0001663
2008-07-06 14:28 chupakabra Status feedback => resolved
2008-07-06 14:28 chupakabra Resolution open => fixed
2008-07-19 05:41 vskirdin Build => 529
2008-07-19 05:41 vskirdin Status resolved => closed
2008-07-19 05:41 vskirdin Fixed in Version => 1.80 alpha 1