diff --git a/krusader/Panel/listpanel.cpp b/krusader/Panel/listpanel.cpp --- a/krusader/Panel/listpanel.cpp +++ b/krusader/Panel/listpanel.cpp @@ -72,6 +72,7 @@ #include "../krusaderview.h" #include "../krservices.h" #include "../VFS/krpermhandler.h" +#include "../VFS/krarchandler.h" #include "../MountMan/kmountman.h" #include "../BookMan/krbookmarkbutton.h" #include "../Dialogs/krdialogs.h" @@ -977,10 +978,16 @@ newPath = KIO::upUrl(func->files()->vfs_getOrigin()); } else { vfile *v = func->getVFile(it); + // If it's a directory different from ".." if (v && v->vfile_isDir() && v->vfile_getName() != "..") { newPath = v->vfile_getUrl(); } else { - newPath = func->files() ->vfs_getOrigin(); + // If it's a supported compressed file + if (v && KRarcHandler::arcSupported(v->vfile_getMime())) { + newPath = func->browsableArchivePath(v->vfile_getUrl().fileName()); + } else { + newPath = func->files()->vfs_getOrigin(); + } } } otherPanel()->func->openUrl(newPath);