Fix handling deletion of watched directory in MSW wxFileSystemWatcher.
Don't log an incomprehensible error when the watched directory itself is deleted, but generate wxFSW_EVENT_DELETE for it. This is consistent with the behaviour under Unix and generally more useful. Closes #13294. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76186 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -225,7 +225,10 @@ public:
|
||||
// Special status indicating that we should exit retrieved.
|
||||
Status_Exit,
|
||||
|
||||
// Some error occurred.
|
||||
// An error occurred because the watched directory was deleted.
|
||||
Status_Deleted,
|
||||
|
||||
// Some other error occurred.
|
||||
Status_Error
|
||||
};
|
||||
|
||||
@@ -248,6 +251,14 @@ public:
|
||||
return *count || *watch || *overlapped ? Status_OK : Status_Exit;
|
||||
}
|
||||
|
||||
// An error is returned if the underlying directory has been deleted,
|
||||
// but this is not really an unexpected failure, so handle it
|
||||
// specially.
|
||||
if ( wxSysErrorCode() == ERROR_ACCESS_DENIED &&
|
||||
*watch && !wxFileName::DirExists((*watch)->GetPath()) )
|
||||
return Status_Deleted;
|
||||
|
||||
// Some other error, at least log it.
|
||||
wxLogSysError(_("Unable to dequeue completion packet"));
|
||||
|
||||
return Status_Error;
|
||||
|
Reference in New Issue
Block a user