Index: CachedDirectory.cpp
===================================================================
--- CachedDirectory.cpp	(revision 17022)
+++ CachedDirectory.cpp	(working copy)
@@ -741,16 +741,16 @@
 
 	if ((newStatus != m_currentFullStatus)&&(m_ownStatus.IsVersioned()))
 	{
-		if ((m_currentFullStatus != svn_wc_status_none)&&(m_ownStatus.GetEffectiveStatus() != svn_wc_status_ignored))
+		if (m_ownStatus.GetEffectiveStatus() == svn_wc_status_ignored)
+			newStatus = svn_wc_status_ignored;
+
+		if (newStatus != m_currentFullStatus)
 		{
 			// Our status has changed - tell the shell
 			CTraceToOutputDebugString::Instance()(_T("CachedDirectory.cpp: Dir %s, status change from %d to %d\n"), m_directoryPath.GetWinPath(), m_currentFullStatus, newStatus);
+			m_currentFullStatus = newStatus;
 			CSVNStatusCache::Instance().UpdateShell(m_directoryPath);
 		}
-		if (m_ownStatus.GetEffectiveStatus() != svn_wc_status_ignored)
-			m_currentFullStatus = newStatus;
-		else
-			m_currentFullStatus = svn_wc_status_ignored;
 	}
 	// And tell our parent, if we've got one...
 	// we tell our parent *always* about our status, even if it hasn't

