Пример #1
0
        private void SourceBuffersChanged(object sender, ProjectionSourceBuffersChangedEventArgs e)
        {
            IProjectionBufferBase    projBuffer              = (IProjectionBufferBase)sender;
            FrugalList <ITextBuffer> addedToGraphBuffers     = new FrugalList <ITextBuffer>();
            FrugalList <ITextBuffer> removedFromGraphBuffers = new FrugalList <ITextBuffer>();

            foreach (ITextBuffer addedBuffer in e.AddedBuffers)
            {
                AddSourceBuffer(projBuffer, addedBuffer, addedToGraphBuffers);
            }

            foreach (ITextBuffer removedBuffer in e.RemovedBuffers)
            {
                RemoveSourceBuffer(projBuffer, removedBuffer, removedFromGraphBuffers);
            }

            if (addedToGraphBuffers.Count > 0 || removedFromGraphBuffers.Count > 0)
            {
                var listeners = GraphBuffersChanged;
                if (listeners != null)
                {
                    ((BaseBuffer)projBuffer).group.EnqueueEvents
                        (new GraphEventRaiser(this, new GraphBuffersChangedEventArgs(addedToGraphBuffers, removedFromGraphBuffers)), null);
                }
            }
        }
Пример #2
0
            private void OnSourceBuffersChanged(object sender, ProjectionSourceBuffersChangedEventArgs e)
            {
                BufferGraph targetGraph = this.GetTargetGraph();

                if (targetGraph != null)
                {
                    targetGraph.SourceBuffersChanged(sender, e);
                }
            }
Пример #3
0
        private void OnProjectionBufferSourceBuffersChanged(object sender, ProjectionSourceBuffersChangedEventArgs e)
        {
            foreach (var b in e.RemovedBuffers)
            {
                _viewModel.SourceBuffers.Remove(b);
            }

            foreach (var b in e.AddedBuffers)
            {
                _viewModel.SourceBuffers.Add(b);
            }

            UpdateSourceSpans();
        }
Пример #4
0
        private void OnProjectionBufferSourceBuffersChanged(object sender, ProjectionSourceBuffersChangedEventArgs e)
        {
            foreach (var b in e.RemovedBuffers)
            {
                _viewModel.SourceBuffers.Remove(b);
            }

            foreach (var b in e.AddedBuffers)
            {
                _viewModel.SourceBuffers.Add(b);
            }

            UpdateSourceSpans();
        }
Пример #5
0
        private void OnSourceBuffersChanged(object sender, ProjectionSourceBuffersChangedEventArgs e)
        {
            // This is something of a hack. We can't use the buffer graph events for tracking when buffers are added
            // or removed from the projection stack (the buffer events are fired after the corresponding text changed
            // events so people getting tags inside the text change event would not see any tags on the newly added
            // buffers). Instead, we update our buffer states by traversing the entire buffer graph whenever the
            // source buffers for any projection buffer in the graph changes.
            //
            // This should be rare.

            // Bump our version number so we can tell which BufferStates are unused.
            ++(this.versionNumber);

            this.RegisterBufferGraph();

            // Now that all living buffers have been registerd (and had their version numbers bumped), find any stale buffers
            // that have an old version number and remove them.
            List <ITextBuffer> deadBuffers = null;

            foreach (var kvp in this.bufferStates)
            {
                if (kvp.Value.VersionNumber != this.versionNumber)
                {
                    if (deadBuffers == null)
                    {
                        deadBuffers = new List <ITextBuffer>(this.bufferStates.Count);
                    }
                    deadBuffers.Add(kvp.Key);
                }
            }

            if (deadBuffers != null)
            {
                foreach (var b in deadBuffers)
                {
                    this.UnregisterAndRemoveBuffer(b);
                }
            }
        }
 private void OnSourceBuffersChanged(object sender, ProjectionSourceBuffersChangedEventArgs e)
 {
     _label.Content = $"This text view contains {_projectionBuffer.SourceBuffers.Count} projection buffers and {_projectionBuffer.CurrentSnapshot.SpanCount} projection spans.";
 }
Пример #7
0
 private void OnSourceBuffersChanged(object sender, ProjectionSourceBuffersChangedEventArgs e)
 => HandleAddRemoveBuffers(e.AddedBuffers, e.RemovedBuffers);
 private void OnSourceBuffersChanged(object sender, ProjectionSourceBuffersChangedEventArgs e) {
     HandleAddRemoveBuffers(e.AddedBuffers, e.RemovedBuffers);
 }