diff --git a/IDE/src/Compiler/BfCompiler.bf b/IDE/src/Compiler/BfCompiler.bf index 919cfa4f..29b92133 100644 --- a/IDE/src/Compiler/BfCompiler.bf +++ b/IDE/src/Compiler/BfCompiler.bf @@ -987,7 +987,11 @@ namespace IDE.Compiler { if (!curWatches.Contains(kv.key)) { - gApp.mFileWatcher.RemoveWatch(kv.key, kv.value); + var watchFile = scope String(kv.key); + if ((watchFile.EndsWith(Path.DirectorySeparatorChar)) || (watchFile.EndsWith(Path.AltDirectorySeparatorChar))) + watchFile.Append("*"); + gApp.mFileWatcher.RemoveWatch(watchFile, kv.value); + //Debug.Assert(!gApp.mFileWatcher.HasDependentObject(kv.value)); oldKeys.Add(kv.key); } } diff --git a/IDE/src/FileWatcher.bf b/IDE/src/FileWatcher.bf index 39b2f34a..5976cb71 100644 --- a/IDE/src/FileWatcher.bf +++ b/IDE/src/FileWatcher.bf @@ -581,6 +581,18 @@ namespace IDE #endif } + public bool HasDependentObject(Object dependentObject) + { + for (var watchedFileKV in mWatchedFiles) + { + if (watchedFileKV.value.mDependentObjects.Contains(dependentObject)) + return true; + } + if (mDependencyChangeSet.Contains(Internal.UnsafeCastToPtr(dependentObject))) + return true; + return false; + } + public void Update(delegate void(String, String, WatcherChangeTypes) fileChangeHandler = null) { while (true)