Private(string const & abs_filename) : fi(toqstr(abs_filename))
{
- name = abs_filename;
+ name = fromqstr(fi.absoluteFilePath());
fi.setCaching(fi.exists() ? true : false);
}
///
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), /**/);
}
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), /**/);
}
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;
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);
}