]> git.lyx.org Git - lyx.git/blobdiff - src/support/FileName.cpp
an example for the sweave module, prepared by Gregor Gorjanc
[lyx.git] / src / support / FileName.cpp
index cb08ba242a46e56d4b73128370b72c1406d3f786..2a1815ec5b03a8468d3cbcd3c9db6de49994dc48 100644 (file)
@@ -105,7 +105,7 @@ struct FileName::Private
 
        Private(string const & abs_filename) : fi(toqstr(abs_filename))
        {
-               name = abs_filename;
+               name = fromqstr(fi.absoluteFilePath());
                fi.setCaching(fi.exists() ? true : false);
        }
        ///
@@ -212,8 +212,8 @@ string FileName::realPath() const
 
 void FileName::set(string const & name)
 {
-       d->name = name;
        d->fi.setFile(toqstr(name));
+       d->name = fromqstr(d->fi.absoluteFilePath());
        //LYXERR(Debug::FILES, "FileName::set(" << name << ')');
        LASSERT(empty() || isAbsolute(d->name), /**/);
 }
@@ -221,11 +221,11 @@ void FileName::set(string const & name)
 
 void FileName::set(FileName const & rhs, string const & suffix)
 {
-       d->name = rhs.d->name + suffix;
        if (!rhs.d->fi.isDir())
                d->fi.setFile(rhs.d->fi.filePath() + toqstr(suffix));
        else
                d->fi.setFile(QDir(rhs.d->fi.absoluteFilePath()), toqstr(suffix));
+       d->name = fromqstr(d->fi.absoluteFilePath());
        //LYXERR(Debug::FILES, "FileName::set(" << d->name << ')');
        LASSERT(empty() || isAbsolute(d->name), /**/);
 }
@@ -407,7 +407,9 @@ FileNameList FileName::dirList(string const & ext) const
                return dirlist;
        }
 
-       QDir dir = d->fi.absoluteDir();
+       // If the directory is specified without a trailing '/', absoluteDir()
+       // would return the parent dir, so we must use absoluteFilePath() here.
+       QDir dir = d->fi.absoluteFilePath();
 
        if (!ext.empty()) {
                QString filter;
@@ -999,7 +1001,10 @@ bool equivalent(FileName const & l, FileName const & r)
 
 bool operator==(FileName const & lhs, FileName const & rhs)
 {
-       return lhs.absFilename() == rhs.absFilename();
+       return os::isFilesystemCaseSensitive()
+               ? lhs.absFilename() == rhs.absFilename()
+               : !QString::compare(toqstr(lhs.absFilename()),
+                               toqstr(rhs.absFilename()), Qt::CaseInsensitive);
 }