From: <sag...@us...> - 2014-12-15 00:56:19
|
Revision: 4652 http://sourceforge.net/p/modplug/code/4652 Author: saga-games Date: 2014-12-15 00:56:12 +0000 (Mon, 15 Dec 2014) Log Message: ----------- [Imp] Support relative paths in SongProperties.ini Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2014-12-15 00:26:30 UTC (rev 4651) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2014-12-15 00:56:12 UTC (rev 4652) @@ -2969,7 +2969,7 @@ void CModDoc::SerializeViews() const //---------------------------------- { - const mpt::PathString pathName = GetPathNameMpt(); + const mpt::PathString pathName = theApp.IsPortableMode() ? GetPathNameMpt().AbsolutePathToRelative(theApp.GetAppDirPath()) : GetPathNameMpt(); if(pathName.empty()) { return; @@ -3035,17 +3035,23 @@ void CModDoc::DeserializeViews() //------------------------------ { - const mpt::PathString pathName = GetPathNameMpt(); + mpt::PathString pathName = GetPathNameMpt(); if(pathName.empty()) return; SettingsContainer &settings = theApp.GetSongSettings(); mpt::ustring s = settings.Read<mpt::ustring>("WindowSettings", pathName.ToWide()); if(s.size() < 2) { - // Try searching for filename instead of full path name - const std::wstring altName = settings.Read<std::wstring>("WindowSettings", pathName.GetFullFileName().ToWide()); - s = settings.Read<mpt::ustring>("WindowSettings", altName); - if(s.size() < 2) return; + // Try relative path + pathName = pathName.RelativePathToAbsolute(theApp.GetAppDirPath()); + s = settings.Read<mpt::ustring>("WindowSettings", pathName.ToWide()); + if(s.size() < 2) + { + // Try searching for filename instead of full path name + const std::wstring altName = settings.Read<std::wstring>("WindowSettings", pathName.GetFullFileName().ToWide()); + s = settings.Read<mpt::ustring>("WindowSettings", altName); + if(s.size() < 2) return; + } } std::vector<char> data = Util::HexToBin(s); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |