void WindowManager_WindowRemoved(object sender, WindowEventArgs e) { Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => { var foundItem = VMLocator.Main.Icons.FirstOrDefault(i => i.Windows.Any(w => w.Hwnd == e.Window.Hwnd)); if (foundItem != null) { foundItem.Windows.Remove(e.Window); if (!foundItem.Windows.Any() && !foundItem.Pinned) VMLocator.Main.Icons.Remove(foundItem); } })); }
void WindowManager_WindowAdded(object sender, WindowEventArgs e) { Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => { var foundItems = VMLocator.Main.Icons.Where(i => PathTools.SamePath(i.Path, e.Window.FileName)); IconViewModel windowIcon = null; if (foundItems.Any()) windowIcon = foundItems.First(); if (!foundItems.Any() || (windowIcon != null && windowIcon.Windows.Count > 0)) { windowIcon = new IconViewModel() { Name = Path.GetFileName(e.Window.FileName), Path = e.Window.FileName, Pinned = false }; VMLocator.Main.Icons.Add(windowIcon); } windowIcon.Windows.Add(e.Window); })); }