コード例 #1
0
ファイル: FoldingMargin.cs プロジェクト: blockspacer/isilme
        void TextViewVisualLinesChanged(object sender, EventArgs e)
        {
            foreach (FoldingMarginMarker m in markers)
            {
                RemoveVisualChild(m);
            }
            markers.Clear();
            InvalidateVisual();
            if (TextView != null && FoldingManager != null && TextView.VisualLinesValid)
            {
                foreach (VisualLine line in TextView.VisualLines)
                {
                    FoldingSection fs = FoldingManager.GetNextFolding(line.FirstDocumentLine.Offset);
                    if (fs == null)
                    {
                        continue;
                    }
                    if (fs.StartOffset <= line.LastDocumentLine.Offset + line.LastDocumentLine.Length)
                    {
                        FoldingMarginMarker m = new FoldingMarginMarker {
                            IsExpanded     = !fs.IsFolded,
                            VisualLine     = line,
                            FoldingSection = fs
                        };
                        markers.Add(m);
                        AddVisualChild(m);

                        m.IsMouseDirectlyOverChanged += delegate { InvalidateVisual(); };

                        InvalidateMeasure();
                        continue;
                    }
                }
            }
        }
コード例 #2
0
        public void UpdateFoldings(FoldingManager fm, IEnumerable<String> linesadded)
        {

            var last = fm.GetNextFolding(lastfold.StartOffset);
            foreach (var line in linesadded)
            {
                 var M = r.Match(line);
                 if (M.Success)
                 {
                     endfold = n + line.Length;
                     if (!prev)
                     {
                         prev = true;
                         startfold = n;
                         lastfold = new NewFolding(startfold, endfold);
                         fm.CreateFolding(startfold, endfold).Title = "FileSync Complete";
                     }
                     else
                     {
                         last.EndOffset = endfold;
                     }
                    
                     
                 }
                 else
                 {
                     if (prev)
                     {
                       
                             lastfold = new NewFolding(startfold, endfold);
                             fm.CreateFolding(startfold, endfold).Title = "FileSync Complete";
                         
                     }
                         
                     prev = false;
                 }

                 linenr++;
                 n += line.Length+1;
            }
        }