When watching a tree recursively, add the files and not only the directories.
Also, add -- and remove in RemoveTree() -- the root directory itself and not
only its children.
Closes #14480.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72066
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// all of them to Add() and let it choose? this is useful when adding a
// file to a dir that is already watched, then not only should we know
// about that, but Add() should also behave well then
// all of them to Add() and let it choose? this is useful when adding a
// file to a dir that is already watched, then not only should we know
// about that, but Add() should also behave well then
- virtual wxDirTraverseResult OnFile(const wxString& WXUNUSED(filename))
+ virtual wxDirTraverseResult OnFile(const wxString& filename)
+ wxLogTrace(wxTRACE_FSWATCHER,
+ "--- AddTree adding file '%s' ---", filename);
+ m_watcher->DoAdd(wxFileName::FileName(filename),
+ m_events, wxFSWPath_File);
return wxDIR_CONTINUE;
}
virtual wxDirTraverseResult OnDir(const wxString& dirname)
{
return wxDIR_CONTINUE;
}
virtual wxDirTraverseResult OnDir(const wxString& dirname)
{
- wxLogTrace(wxTRACE_FSWATCHER, "--- AddTree adding '%s' ---",
- dirname);
+ wxLogTrace(wxTRACE_FSWATCHER,
+ "--- AddTree adding directory '%s' ---", dirname);
// we add as much as possible and ignore errors
// we add as much as possible and ignore errors
- m_watcher->Add(wxFileName(dirname), m_events);
+ m_watcher->DoAdd(wxFileName::DirName(dirname),
+ m_events, wxFSWPath_Dir);
AddTraverser traverser(this, events);
dir.Traverse(traverser, filter);
AddTraverser traverser(this, events);
dir.Traverse(traverser, filter);
+ // Add the path itself explicitly as Traverse() doesn't return it.
+ Add(path.GetPathWithSep(), events);
+
virtual wxDirTraverseResult OnDir(const wxString& dirname)
{
virtual wxDirTraverseResult OnDir(const wxString& dirname)
{
- m_watcher->RemoveTree(wxFileName(dirname));
+ m_watcher->Remove(wxFileName::DirName(dirname));
RemoveTraverser traverser(this);
dir.Traverse(traverser);
RemoveTraverser traverser(this);
dir.Traverse(traverser);
+ // As in AddTree() above, handle the path itself explicitly.
+ Remove(path);
+