Fix file paths in wxFileSystemWatcherEvent under OS X.

The separator between the watched directory and the name of the file in the
generated event was missing, add it now.

Closes #13161.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67581 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2011-04-23 11:17:33 +00:00
parent d7cfeeb49c
commit f3b1d0fc56

View File

@ -297,7 +297,8 @@ protected:
while ( nflags )
{
// when monitoring dir, this means create/delete
if ( nflags & NOTE_WRITE && wxDirExists(w.GetPath()) )
const wxString basepath = w.GetPath();
if ( nflags & NOTE_WRITE && wxDirExists(basepath) )
{
// NOTE_LINK is set when the dir was created, but we
// don't care - we look for new names in directory
@ -308,6 +309,7 @@ protected:
wxArrayString changedFiles;
wxArrayInt changedFlags;
FindChanges(w, changedFiles, changedFlags);
wxArrayString::iterator it = changedFiles.begin();
wxArrayInt::iterator changeType = changedFlags.begin();
for ( ; it != changedFiles.end(); ++it, ++changeType )
@ -315,11 +317,13 @@ protected:
wxFileName path;
if ( wxDirExists(*it) )
{
path = wxFileName::DirName(w.GetPath() + *it);
path = wxFileName::DirName(
basepath + wxFileName::GetPathSeparator() + *it
);
}
else
{
path = wxFileName::FileName(w.GetPath() + *it);
path.Assign(basepath, *it);
}
wxFileSystemWatcherEvent event(*changeType, path, path);
@ -333,28 +337,28 @@ protected:
// still we couldn't be sure we have the right name...
nflags &= ~NOTE_RENAME;
wxFileSystemWatcherEvent event(wxFSW_EVENT_RENAME,
w.GetPath(), wxFileName());
basepath, wxFileName());
SendEvent(event);
}
else if ( nflags & NOTE_WRITE || nflags & NOTE_EXTEND )
{
nflags &= ~(NOTE_WRITE | NOTE_EXTEND);
wxFileSystemWatcherEvent event(wxFSW_EVENT_MODIFY,
w.GetPath(), w.GetPath());
basepath, basepath);
SendEvent(event);
}
else if ( nflags & NOTE_DELETE )
{
nflags &= ~(NOTE_DELETE);
wxFileSystemWatcherEvent event(wxFSW_EVENT_DELETE,
w.GetPath(), w.GetPath());
basepath, basepath);
SendEvent(event);
}
else if ( nflags & NOTE_ATTRIB )
{
nflags &= ~(NOTE_ATTRIB);
wxFileSystemWatcherEvent event(wxFSW_EVENT_ACCESS,
w.GetPath(), w.GetPath());
basepath, basepath);
SendEvent(event);
}