diff -ru qmake\generators\win32\msbuild_objectmodel.cpp qmake-fix\generators\win32\msbuild_objectmodel.cpp
--- qmake\generators\win32\msbuild_objectmodel.cpp	Sat Nov 06 03:55:00 2010
+++ qmake-fix\generators\win32\msbuild_objectmodel.cpp	Mon May 23 09:15:56 2011
@@ -2612,7 +2612,7 @@
                 xml << tag("CustomBuild")
                     << attrTag("Include",Option::fixPathToLocalOS(filename));
 
-                if ( filtername == "Form Files" || filtername == "Generated Files" || filtername == "Resource Files" )
+				if ( filtername.startsWith("Form Files") || filtername.startsWith("Generated Files") || filtername.startsWith("Resource Files") )
                     xml << attrTagS("FileType", "Document");
             }
 
@@ -2623,7 +2623,7 @@
         {
             fileAdded = true;
 
-            if (filtername == "Source Files") {
+			if (filtername.startsWith("Source Files")) {
 
                 xmlFilter << tag("ClCompile")
                           << attrTag("Include",Option::fixPathToLocalOS(filename))
@@ -2632,7 +2632,7 @@
                 xml << tag("ClCompile")
                     << attrTag("Include",Option::fixPathToLocalOS(filename));
 
-            } else if(filtername == "Header Files") {
+			} else if(filtername.startsWith("Header Files")) {
 
                 xmlFilter << tag("ClInclude")
                     << attrTag("Include",Option::fixPathToLocalOS(filename))
@@ -2640,7 +2640,7 @@
 
                 xml << tag("ClInclude")
                     << attrTag("Include",Option::fixPathToLocalOS(filename));
-            } else if(filtername == "Generated Files" || filtername == "Form Files") {
+			} else if(filtername.startsWith("Generated Files") || filtername.startsWith("Form Files")) {
 
                 if (filename.endsWith(".h")) {
 
@@ -2675,7 +2675,7 @@
                     xml << tag("CustomBuild")
                         << attrTag("Include",Option::fixPathToLocalOS(filename));
                 }
-            } else if(filtername == "Root Files") {
+			} else if(filtername.startsWith("Root Files")) {
 
                 if (filename.endsWith(".rc")) {
 
@@ -2978,21 +2995,21 @@
 
     for (int i = 0; i < SingleProjects.count(); ++i) {
         VCXFilter filter;
-        if (filtername == "Root Files") {
+		if (filtername.startsWith("Root Files")) {
             filter = SingleProjects.at(i).RootFiles;
-        } else if (filtername == "Source Files") {
+		} else if (filtername.startsWith("Source Files")) {
             filter = SingleProjects.at(i).SourceFiles;
-        } else if (filtername == "Header Files") {
+		} else if (filtername.startsWith("Header Files")) {
             filter = SingleProjects.at(i).HeaderFiles;
-        } else if (filtername == "Generated Files") {
+		} else if (filtername.startsWith("Generated Files")) {
             filter = SingleProjects.at(i).GeneratedFiles;
-        } else if (filtername == "LexYacc Files") {
+		} else if (filtername.startsWith("LexYacc Files")) {
             filter = SingleProjects.at(i).LexYaccFiles;
-        } else if (filtername == "Translation Files") {
+		} else if (filtername.startsWith("Translation Files")) {
             filter = SingleProjects.at(i).TranslationFiles;
-        } else if (filtername == "Form Files") {
+		} else if (filtername.startsWith("Form Files")) {
             filter = SingleProjects.at(i).FormFiles;
-        } else if (filtername == "Resource Files") {
+		} else if (filtername.startsWith("Resource Files")) {
             filter = SingleProjects.at(i).ResourceFiles;
         } else {
             // ExtraCompilers
@@ -3006,7 +3023,7 @@
 
     if ( !fileAdded )
     {
-        if (filtername == "Source Files") {
+		if (filtername.startsWith("Source Files")) {
 
             xmlFilter << tag("ClCompile")
                       << attrTag("Include",Option::fixPathToLocalOS(info.file))
@@ -3015,7 +3032,7 @@
             xml << tag("ClCompile")
                 << attrTag("Include",Option::fixPathToLocalOS(info.file));
 
-        } else if(filtername == "Header Files") {
+		} else if(filtername.startsWith("Header Files")) {
 
             xmlFilter << tag("ClInclude")
                 << attrTag("Include",Option::fixPathToLocalOS(info.file))
@@ -3023,7 +3040,7 @@
 
             xml << tag("ClInclude")
                 << attrTag("Include",Option::fixPathToLocalOS(info.file));
-        } else if(filtername == "Generated Files" || filtername == "Form Files") {
+		} else if(filtername.startsWith("Generated Files") || filtername.startsWith("Form Files")) {
 
             if (info.file.endsWith(".h")) {
 
@@ -3059,7 +3076,7 @@
                     << attrTag("Include",Option::fixPathToLocalOS(info.file));
             }
 
-        } else if(filtername == "Root Files") {
+		} else if(filtername.startsWith("Root Files")) {
 
             if (info.file.endsWith(".rc")) {
 
@@ -3100,21 +3117,21 @@
 
     for (int i = 0; i < SingleProjects.count(); ++i) {
         VCXFilter filter;
-        if (filtername == "Root Files") {
+		if (filtername.startsWith("Root Files")) {
             filter = SingleProjects.at(i).RootFiles;
-        } else if (filtername == "Source Files") {
+		} else if (filtername.startsWith("Source Files")) {
             filter = SingleProjects.at(i).SourceFiles;
-        } else if (filtername == "Header Files") {
+		} else if (filtername.startsWith("Header Files")) {
             filter = SingleProjects.at(i).HeaderFiles;
-        } else if (filtername == "Generated Files") {
+		} else if (filtername.startsWith("Generated Files")) {
             filter = SingleProjects.at(i).GeneratedFiles;
-        } else if (filtername == "LexYacc Files") {
+		} else if (filtername.startsWith("LexYacc Files")) {
             filter = SingleProjects.at(i).LexYaccFiles;
-        } else if (filtername == "Translation Files") {
+		} else if (filtername.startsWith("Translation Files")) {
             filter = SingleProjects.at(i).TranslationFiles;
-        } else if (filtername == "Form Files") {
+		} else if (filtername.startsWith("Form Files")) {
             filter = SingleProjects.at(i).FormFiles;
-        } else if (filtername == "Resource Files") {
+		} else if (filtername.startsWith("Resource Files")) {
             filter = SingleProjects.at(i).ResourceFiles;
         } else {
             // ExtraCompilers
@@ -3148,21 +3165,21 @@
 
     for (int i = 0; i < SingleProjects.count(); ++i) {
         VCXFilter filter;
-        if (filtername == "Root Files") {
+		if (filtername.startsWith("Root Files")) {
             filter = SingleProjects.at(i).RootFiles;
-        } else if (filtername == "Source Files") {
+		} else if (filtername.startsWith("Source Files")) {
             filter = SingleProjects.at(i).SourceFiles;
-        } else if (filtername == "Header Files") {
+		} else if (filtername.startsWith("Header Files")) {
             filter = SingleProjects.at(i).HeaderFiles;
-        } else if (filtername == "Generated Files") {
+		} else if (filtername.startsWith("Generated Files")) {
             filter = SingleProjects.at(i).GeneratedFiles;
-        } else if (filtername == "LexYacc Files") {
+		} else if (filtername.startsWith("LexYacc Files")) {
             filter = SingleProjects.at(i).LexYaccFiles;
-        } else if (filtername == "Translation Files") {
+		} else if (filtername.startsWith("Translation Files")) {
             filter = SingleProjects.at(i).TranslationFiles;
-        } else if (filtername == "Form Files") {
+		} else if (filtername.startsWith("Form Files")) {
             filter = SingleProjects.at(i).FormFiles;
-        } else if (filtername == "Resource Files") {
+		} else if (filtername.startsWith("Resource Files")) {
             filter = SingleProjects.at(i).ResourceFiles;
         } else {
             // ExtraCompilers
