View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000570 | Far Manager | Panel | public | 2008-07-03 09:01 | 2008-07-19 05:41 |
Reporter | chupakabra | Assigned To | vskirdin | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Fixed in Version | 1.80 alpha 1 | ||||
Summary | 0000570: Вычисление текущего каталога для плагина с OPIF_REALNAMES | ||||
Description | Для плагина с OPIF_REALNAMES текущий каталог вычисляется на основе текущего элемента на панели, а OpenPluginInfo.CurDir игнорируется. Это в частности создает проблемы такого рода: http://forum.farmanager.com/viewtopic.php?p=33922#p33922 Прилагается патч. | ||||
Tags | No tags attached. | ||||
Build | 529 | ||||
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(); } } |
|
просьба прояснить что делает патч 1) что было до патча 2) как оно исправилось после 3) если патч будет принят, то могу ли я аналогичное изменение сделать в 1.71? |
|
Проще всего посмотреть на примере плагина, на который есть ссылка в описании. При копировании файла с панели Фара на панель плагина Фар копирует его в подкаталог на панели Фара с именем текущего объекта на панели плагина. Это происходит из-за того, что неправильно определяется текущий каталог на панели плагина, а именно вместо использования 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(); } } |
|
Сейчас заметил что некоторые строчки в патче были лишними, т.к. GetOpenPluginInfo() уже вызывается ранее в FileList::ShowFileList(). Загрузил flshow.cpp_2.diff. |
|
1.8x - 529 1.7x - 2411 |
|
Проверил - работает. |
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 |