private async void WindowEvents_WindowActivated(Window gotFocus, Window lostFocus) { // Wire up reference for Caret events var textViewHost = GetCurrentViewHost(); if (textViewHost != null) { _control.TextView = textViewHost.TextView; textViewHost.TextView.Caret.PositionChanged += Caret_PositionChanged; if (Settings.Default.ShowHistoryIndicators) { textViewHost.TextView.TextBuffer.ChangedLowPriority += TextBuffer_ChangedLowPriority; } // Subscribe to Outlining events var outliningManagerService = OutliningHelper.GetOutliningManagerService(Package as IServiceProvider); var outliningManager = OutliningHelper.GetOutliningManager(outliningManagerService, GetCurrentViewHost().TextView); if (outliningManager != null && outliningManagerService != null) { _control.OutliningManagerService = outliningManagerService; outliningManager.RegionsExpanded -= OutliningManager_RegionsExpanded; outliningManager.RegionsExpanded += OutliningManager_RegionsExpanded; outliningManager.RegionsCollapsed -= OutliningManager_RegionsCollapsed; outliningManager.RegionsCollapsed += OutliningManager_RegionsCollapsed; } } await UpdateDocumentAsync(gotFocus, gotFocus != lostFocus); }
public CodeNavMargin(IWpfTextViewHost textViewHost, DTE dte, IOutliningManagerService outliningManagerService, VisualStudioWorkspace workspace, MarginSideEnum side) { // Wire up references for the event handlers in RegisterEvents _dte = dte; _textView = textViewHost.TextView; _window = GetWindow(textViewHost, dte); _outliningManagerService = outliningManagerService; _outliningManager = OutliningHelper.GetOutliningManager(outliningManagerService, _textView); _workspace = workspace; MarginSide = side; // If we can not find the window we belong to we can not do anything if (_window == null) { return; } // Add the view/content to the margin area if (side == MarginSideEnum.Top) { _codeNavGrid = CreateGridTop(textViewHost); } else { _codeNavGrid = CreateGrid(textViewHost); _codeNavColumn = _codeNavGrid.ColumnDefinitions[Settings.Default.MarginSide == MarginSideEnum.Left ? 0 : 2]; } Children.Add(_codeNavGrid); System.Windows.Threading.Dispatcher.CurrentDispatcher.VerifyAccess(); RegisterEvents(); UpdateSettings(); }