Xcode: Fix storyboard view

Images and xib files must have 'lastKnownFileType' attribute to be
displayed correctly. If xib file has attribute 'explicitFileType' it is
displayed as raw xml. If static image has attribute 'explicitFileType'
it is displayed as question mark on storyboard.
This commit is contained in:
Ruslan Baratov 2014-01-16 22:16:34 +04:00 committed by Brad King
parent d9f1f917c4
commit 1ce02ebfd5
1 changed files with 9 additions and 3 deletions

View File

@ -753,7 +753,8 @@ cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg,
//----------------------------------------------------------------------------
std::string
GetSourcecodeValueFromFileExtension(const std::string& _ext,
const std::string& lang)
const std::string& lang,
bool& keepLastKnownFileType)
{
std::string ext = cmSystemTools::LowerCase(_ext);
std::string sourcecode = "sourcecode";
@ -764,10 +765,12 @@ GetSourcecodeValueFromFileExtension(const std::string& _ext,
}
else if(ext == "xib")
{
keepLastKnownFileType = true;
sourcecode = "file.xib";
}
else if(ext == "storyboard")
{
keepLastKnownFileType = true;
sourcecode = "file.storyboard";
}
else if(ext == "mm")
@ -793,6 +796,7 @@ GetSourcecodeValueFromFileExtension(const std::string& _ext,
}
else if(ext == "png" || ext == "gif" || ext == "jpg")
{
keepLastKnownFileType = true;
sourcecode = "image";
}
else if(ext == "txt")
@ -871,8 +875,10 @@ cmGlobalXCodeGenerator::CreateXCodeFileReferenceFromPath(
}
else
{
std::string sourcecode = GetSourcecodeValueFromFileExtension(ext, lang);
const char* attribute = (sourcecode == "file.storyboard") ?
bool keepLastKnownFileType = false;
std::string sourcecode = GetSourcecodeValueFromFileExtension(ext,
lang, keepLastKnownFileType);
const char* attribute = keepLastKnownFileType ?
"lastKnownFileType" :
"explicitFileType";
fileRef->AddAttribute(attribute,