Пример #1
0
        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;
            }
        }
Пример #2
0
        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);
        }