protected override void OnRender(DrawingContext drawingContext)
        {
            Size     renderSize = this.RenderSize;
            TextView textView   = this.TextView;

            if (textView != null && textView.VisualLinesValid)
            {
                var zeroLineInfo = changeWatcher.GetChange(0);

                foreach (VisualLine line in textView.VisualLines)
                {
                    Rect rect = new Rect(0, line.VisualTop - textView.ScrollOffset.Y - 1, 5, line.Height + 2);

                    LineChangeInfo info = changeWatcher.GetChange(line.FirstDocumentLine.LineNumber);

                    if (zeroLineInfo.Change == ChangeType.Deleted && line.FirstDocumentLine.LineNumber == 1 && info.Change != ChangeType.Unsaved)
                    {
                        info.Change = ChangeType.Modified;
                    }

                    switch (info.Change)
                    {
                    case ChangeType.None:
                        break;

                    case ChangeType.Added:
                        drawingContext.DrawRectangle(AddedLineBrush, null, rect);
                        break;

                    case ChangeType.Deleted:
                    case ChangeType.Modified:
                        drawingContext.DrawRectangle(ChangedLineBrush, null, rect);
                        break;

                    case ChangeType.Unsaved:
                        drawingContext.DrawRectangle(UnsavedLineBrush, null, rect);
                        break;

                    default:
                        throw new Exception("Invalid value for ChangeType");
                    }
                }
            }
        }
Exemple #2
0
        protected override void OnRender(DrawingContext drawingContext)
        {
            Size     renderSize = this.RenderSize;
            TextView textView   = this.TextView;

            if (textView != null && textView.VisualLinesValid)
            {
                foreach (VisualLine line in textView.VisualLines)
                {
                    Rect rect = new Rect(0, line.VisualTop - textView.ScrollOffset.Y, 5, line.Height);

                    LineChangeInfo info = changeWatcher.GetChange(line.FirstDocumentLine.LineNumber);

                    switch (info.Change)
                    {
                    case ChangeType.None:
                        break;

                    case ChangeType.Added:
                        drawingContext.DrawRectangle(Brushes.LightGreen, null, rect);
                        break;

                    case ChangeType.Deleted:
                    case ChangeType.Modified:
                        drawingContext.DrawRectangle(Brushes.LightBlue, null, rect);
                        break;

                    case ChangeType.Unsaved:
                        drawingContext.DrawRectangle(Brushes.Yellow, null, rect);
                        break;

                    default:
                        throw new Exception("Invalid value for ChangeType");
                    }
                }
            }
        }