Пример #1
0
        void OnNewTabContentShownDelay(IDocumentTab documentTab)
        {
            var newNodes = documentTab.Content.Nodes.ToArray();

            if (Equals(DocumentTreeView.TreeView.SelectedItems, newNodes))
            {
                return;
            }

            // The treeview steals the focus so remember the current focused element. Don't restore
            // the focus if it's a node in the treeview.
            var focusedElem = Keyboard.FocusedElement;

            if (DocumentTreeView.TreeView.UIObject.IsKeyboardFocusWithin)
            {
                focusedElem = null;
            }
            bool tabGroupHasFocus = TabGroupService.TabGroups.Any(a => a.IsKeyboardFocusWithin);

            disableSelectionChangedEventCounter++;
            try {
                DocumentTreeView.TreeView.SelectItems(newNodes);
            }
            finally {
                disableSelectionChangedEventCounter--;
            }

            if (focusedElem != null && Keyboard.FocusedElement != focusedElem)
            {
                if (tabGroupHasFocus)
                {
                    var tab = ActiveTabContentImpl;
                    Debug.Assert(tab != null);
                    if (tab != null)
                    {
                        tab.TrySetFocus();
                    }
                }
                else
                {
                    wpfFocusService.Focus(focusedElem);
                }
            }
        }