private void HideWindow() { if (_windowCloser != null) { _windowCloser.Dispose(); _windowCloser = null; } _altTabAutoSwitch = false; Opacity = 0; Dispatcher.BeginInvoke(new Action(Hide), DispatcherPriority.Input); }
/// <summary> /// Populates the window list with the current running windows. /// </summary> private void LoadData(InitialFocus focus) { _unfilteredWindowList = new WindowFinder().GetWindows().Select(window => new AppWindowViewModel(window)).ToList(); AppWindowViewModel firstWindow = _unfilteredWindowList.FirstOrDefault(); bool foregroundWindowMovedToBottom = false; // Move first window to the bottom of the list if it's related to the foreground window if (firstWindow != null && AreWindowsRelated(firstWindow.AppWindow, _foregroundWindow)) { _unfilteredWindowList.RemoveAt(0); _unfilteredWindowList.Add(firstWindow); foregroundWindowMovedToBottom = true; } _filteredWindowList = new ObservableCollection <AppWindowViewModel>(_unfilteredWindowList); _windowCloser = new WindowCloser(); foreach (AppWindowViewModel window in _unfilteredWindowList) { window.FormattedTitle = new XamlHighlighter().Highlight(new[] { new StringPart(window.AppWindow.Title) }); window.FormattedProcessTitle = new XamlHighlighter().Highlight(new[] { new StringPart(window.AppWindow.ProcessTitle) }); } lb.DataContext = null; lb.DataContext = _filteredWindowList; FocusItemInList(focus, foregroundWindowMovedToBottom); tb.Clear(); tb.Focus(); CenterWindow(); ScrollSelectedItemIntoView(); }