From 619508b16c7089377d8413f9ee5506354f446ab1 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sat, 8 Mar 2025 00:30:30 +1100 Subject: files: change directory monitor return Only return the outermost monitor, hook onto that to cancel the nested ones Also use the monitor flags in hopes of it actually picking up changes to files (it doesnt) --- src/utils/system.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/utils') diff --git a/src/utils/system.ts b/src/utils/system.ts index d0470c7..518fb9a 100644 --- a/src/utils/system.ts +++ b/src/utils/system.ts @@ -78,18 +78,18 @@ export const bindCurrentTime = ( export const monitorDirectory = (path: string, callback: (path: string) => void, recursive?: boolean) => { const file = Gio.file_new_for_path(path.replace("~", HOME)); - const monitor = file.monitor_directory(null, null); + const monitor = file.monitor_directory(Gio.FileMonitorFlags.WATCH_MOUNTS | Gio.FileMonitorFlags.WATCH_MOVES, null); monitor.connect("changed", callback); - const monitors = [monitor]; - if (recursive) { const enumerator = file.enumerate_children("standard::*", null, null); let child; while ((child = enumerator.next_file(null))) - if (child.get_file_type() === Gio.FileType.DIRECTORY) - monitors.push(...monitorDirectory(`${path}/${child.get_name()}`, callback, recursive)); + if (child.get_file_type() === Gio.FileType.DIRECTORY) { + const m = monitorDirectory(`${path}/${child.get_name()}`, callback, recursive); + monitor.connect("notify::cancelled", () => m.cancel()); + } } - return monitors; + return monitor; }; -- cgit v1.2.3-freya