diff -r 58636ff0fb2e src/c4group/C4Group.cpp
--- a/src/c4group/C4Group.cpp	Tue Mar 30 16:04:36 2010 +0200
+++ b/src/c4group/C4Group.cpp	Tue Mar 30 18:48:11 2010 +0200
@@ -6,6 +6,7 @@
  * Copyright (c) 2002-2008  Peter Wortmann
  * Copyright (c) 2004-2008  Günther Brammer
  * Copyright (c) 2005  Armin Burgmeier
+ * Copyright (c) 2010  Carl-Philip Hänsch
  * Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de
  *
  * Portions might be copyrighted by other authors who have contributed
@@ -82,7 +83,7 @@
 char C4Group_Maker[C4GroupMaxMaker+1]="";
 char C4Group_Passwords[CFG_MaxString+1]="";
 char C4Group_TempPath[_MAX_PATH+1]="";
-char C4Group_Ignore[_MAX_PATH+1]="cvs;Thumbs.db";
+char C4Group_Ignore[_MAX_PATH+1]="cvs;CVS;Thumbs.db";
 const char **C4Group_SortList = NULL;
 time_t C4Group_AssumeTimeOffset=0;
 bool (*C4Group_ProcessCallback)(const char *, int)=NULL;
@@ -122,7 +123,11 @@
 
 bool C4Group_TestIgnore(const char *szFilename)
 {
-	return *GetFilename(szFilename) == '.' || SIsModule(C4Group_Ignore,GetFilename(szFilename));
+	if(!*szFilename) return true; //poke out empty strings
+	const char* name = GetFilename(szFilename);
+	return *name == '.' //no hidden files and the directory itself
+		|| name[strlen(name) - 1] == '~' //no temp files
+		|| SIsModule(C4Group_Ignore,name); //not on Blacklist
 }
 
 bool C4Group_IsGroup(const char *szFilename)
@@ -2010,7 +2015,7 @@
 				if (fdt.attrib & lAttrib)
 				{
 					// ignore
-					if (fdt.name[0] == '.') continue;
+					if (C4Group_TestIgnore(fdt.name)) continue;
 					// Compose item path
 					SCopy(szFiles,szFileName,_MAX_FNAME); *GetFilename(szFileName) = 0;
 					SAppend(fdt.name, szFileName, _MAX_FNAME);
@@ -2054,7 +2059,7 @@
 				if (fdt.attrib & lAttrib)
 				{
 					// ignore
-					if (fdt.name[0] == '.') continue;
+					if (C4Group_Ignore(fdt.name)) continue;
 					// Compose item path
 					SCopy(szFiles,szFileName,_MAX_FNAME); *GetFilename(szFileName) = 0;
 					SAppend(fdt.name, szFileName, _MAX_FNAME);
diff -r 58636ff0fb2e src/c4group/C4Group.h
--- a/src/c4group/C4Group.h	Tue Mar 30 16:04:36 2010 +0200
+++ b/src/c4group/C4Group.h	Tue Mar 30 18:48:11 2010 +0200
@@ -68,6 +68,7 @@
 
 #define C4GroupFileID "RedWolf Design GrpFolder"
 
+bool C4Group_TestIgnore(const char *szFilename);
 void C4Group_SetMaker(const char *szMaker);
 void C4Group_SetPasswords(const char *szPassword);
 void C4Group_SetTempPath(const char *szPath);
@@ -131,9 +132,9 @@
 #pragma pack (pop)
 
 const int C4GRES_InGroup  = 0,
-                            C4GRES_OnDisk   = 1,
-                                              C4GRES_InMemory = 2,
-                                                                C4GRES_Deleted  = 3;
+          C4GRES_OnDisk   = 1,
+          C4GRES_InMemory = 2,
+          C4GRES_Deleted  = 3;
 
 class C4GroupEntry: public C4GroupEntryCore
 {
diff -r 58636ff0fb2e src/gui/C4StartupScenSelDlg.cpp
--- a/src/gui/C4StartupScenSelDlg.cpp	Tue Mar 30 16:04:36 2010 +0200
+++ b/src/gui/C4StartupScenSelDlg.cpp	Tue Mar 30 18:48:11 2010 +0200
@@ -7,6 +7,7 @@
  * Copyright (c) 2006  Florian Groß
  * Copyright (c) 2008  Peter Wortmann
  * Copyright (c) 2009  Nicolas Hake
+ * Copyright (c) 2010  Carl-Philip Hänsch
  * Copyright (c) 2005-2009, RedWolf Design GmbH, http://www.clonk.de
  *
  * Portions might be copyrighted by other authors who have contributed
@@ -567,8 +568,7 @@
 	for (; (szChildFilename = **pIter); ++*pIter)
 	{
 		// Ignore directory navigation entries and CVS folders
-		if (!*szChildFilename || *GetFilename(szChildFilename)=='.') continue;
-		if (SEqualNoCase(GetFilename(szChildFilename), "CVS")) continue;
+		if (C4Group_TestIgnore(szChildFilename)) continue;
 		if (WildcardMatch(C4CFN_ScenarioFiles, szChildFilename) || WildcardMatch(C4CFN_FolderFiles, szChildFilename)) break;
 		if (DirectoryExists(szChildFilename))
 			if (DirContainsScenarios(szChildFilename))
@@ -1092,8 +1092,7 @@
 			szChildFilename = GetFilename(szChildFilename);
 
 			// Ignore directory navigation entries and CVS folders
-			if (!*szChildFilename || *szChildFilename=='.') continue;
-			if (SEqualNoCase(szChildFilename, "CVS")) continue;
+			if (C4Group_TestIgnore(szChildFilename)) continue;
 			if (names.find(szChildFilename) != names.end()) continue;
 			names.insert(szChildFilename);
 			// filename okay; create this item
