private void OnIsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { if ((bool)e.NewValue) { //Hook up to the various events we need to keep the caret margin current. _scrollBar.Map.MappingChanged += OnMappingChanged; _coloring = new BlockColoring(_formatMap, 1.0); _coloring.Changed += this.OnColoringChanged; _tagger = _factory.TagAggregatorFactoryService.CreateTagAggregator <IBlockTag>(_textView); _tagger.BatchedTagsChanged += OnTagsChanged; //Force the margin to be re-rendered since things might have changed while the margin was hidden. this.InvalidateVisual(); } else { _scrollBar.Map.MappingChanged -= OnMappingChanged; _coloring.Changed -= this.OnColoringChanged; _coloring.Dispose(); _coloring = null; _tagger.BatchedTagsChanged -= OnTagsChanged; _tagger.Dispose(); _tagger = null; } }
private bool UpdateShowAdornments(bool enabled) { enabled = enabled && (_view.VisualElement.IsVisible || _view.Roles.Contains("PRINTABLE")) && (_showAdornments || _showMethodSeparator); if (_enabled != enabled) { _enabled = enabled; if (enabled) { _coloring = new BlockColoring(_formatMap, 1.0); _coloring.Changed += this.OnColoringChanged; _view.LayoutChanged += OnLayoutChanged; _blockTagger = _factory.TagAggregatorFactoryService.CreateTagAggregator <IBlockTag>(_view); _blockTagger.BatchedTagsChanged += OnTagsChanged; this.RedrawAllAdornments(); return(true); } else { _view.LayoutChanged -= OnLayoutChanged; _coloring.Changed -= this.OnColoringChanged; _coloring.Dispose(); _coloring = null; _blockTagger.BatchedTagsChanged -= OnTagsChanged; _blockTagger.Dispose(); _blockTagger = null; _visibleBlocks.Clear(); _methodSeparators.Clear(); _layer.RemoveAllAdornments(); this.CloseTip(); } } return(false); }