diff options
Diffstat (limited to 'CPP/7zip/UI/Far/Plugin.cpp')
-rwxr-xr-x | CPP/7zip/UI/Far/Plugin.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/CPP/7zip/UI/Far/Plugin.cpp b/CPP/7zip/UI/Far/Plugin.cpp index c176ac92..40851c0c 100755 --- a/CPP/7zip/UI/Far/Plugin.cpp +++ b/CPP/7zip/UI/Far/Plugin.cpp @@ -68,6 +68,9 @@ static void MyGetFileTime(IFolderFolder *anArchiveFolder, UInt32 itemIndex, fileTime = propVariant.filetime; } } + +#define kDotsReplaceString "[[..]]" +#define kDotsReplaceStringU L"[[..]]" void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UInt32 itemIndex) { @@ -83,6 +86,9 @@ void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UInt32 itemIndex) if (oemString.Length() > kFileNameSizeMax) oemString = oemString.Left(kFileNameSizeMax); + if (oemString == "..") + oemString = kDotsReplaceString; + MyStringCopy(panelItem.FindData.cFileName, (const char *)oemString); panelItem.FindData.cAlternateFileName[0] = 0; @@ -194,12 +200,15 @@ void CPlugin::FreeFindData(struct PluginPanelItem *panelItems, } -void CPlugin::EnterToDirectory(const UString &aDirName) +void CPlugin::EnterToDirectory(const UString &dirName) { CMyComPtr<IFolderFolder> newFolder; - _folder->BindToFolder(aDirName, &newFolder); + UString s = dirName; + if (dirName == kDotsReplaceStringU) + s = L".."; + _folder->BindToFolder(s, &newFolder); if (newFolder == NULL) - if (aDirName.IsEmpty()) + if (dirName.IsEmpty()) return; else throw 40325; |