Index: src/TortoiseMerge/WorkingFile.cpp
===================================================================
--- src/TortoiseMerge/WorkingFile.cpp	(revision 2350)
+++ src/TortoiseMerge/WorkingFile.cpp	(working copy)
@@ -49,14 +49,29 @@
 CString 
 CWorkingFile::GetWindowName() const
 {
+	CString sErrMsg = "";
+	
+	// TortoiseMerge allows non-existing files to be used in a merge
+	// Inform the user (in a non-intrusive way) if a file is absent
+	if (! this->Exists())
+	{
+		sErrMsg = _T(" (file not found)");
+	}
+
 	if(m_sDescriptiveName.IsEmpty())
 	{
 		// We don't have a proper name - use the filename part of the path
 		// return the filename part of the path.
-		return CUtils::GetFileNameFromPath(m_sFilename);
+		return CUtils::GetFileNameFromPath(m_sFilename) + sErrMsg;
 	}
 	else
 	{
-		return m_sDescriptiveName;
+		return m_sDescriptiveName + sErrMsg;
 	}
 }
+
+bool
+CWorkingFile::Exists() const
+{
+	return (PathFileExists(m_sFilename));
+}
\ No newline at end of file
Index: src/TortoiseMerge/WorkingFile.h
===================================================================
--- src/TortoiseMerge/WorkingFile.h	(revision 2350)
+++ src/TortoiseMerge/WorkingFile.h	(working copy)
@@ -11,6 +11,7 @@
 public:
 	// Is this file in use?
 	bool InUse() const		{ return !m_sFilename.IsEmpty(); }
+	bool Exists() const;
 	void SetFileName(const CString& newFilename);
 	void SetDescriptiveName(const CString& newDescName);
 	void CreateEmptyFile();
