Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2017-08-04 12:56:14 +0300
committerMike Krüger <mkrueger@xamarin.com>2017-08-04 12:56:14 +0300
commit5434d6236a4c7c72144dfe999a5f096a5128a4cc (patch)
tree9ca66bbd9c28d3624a4b6dd04d9bd3aadaff2bec /main
parent46435b071bfdb30ef4829ac2120f9047fd03fb2b (diff)
Fixed 'Bug 53583 - Using IExtendingLineMarker causes redraw issues'
This was caused by some old code trying to manage the addition/removal of line markers. Was a left over of times where line markers weren't stored in segment trees. I removed the old handling code it was mostly unused anyways.
Diffstat (limited to 'main')
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextViewMargin.cs7
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs18
-rw-r--r--main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Document/TextDocument.cs59
3 files changed, 21 insertions, 63 deletions
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextViewMargin.cs b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextViewMargin.cs
index 7d74e4ae60..2161a00299 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextViewMargin.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextViewMargin.cs
@@ -2560,9 +2560,6 @@ namespace Mono.TextEditor
if (line != null) {
newMarkers.Clear ();
newMarkers.AddRange (textEditor.Document.GetMarkers (line).OfType<IActionTextLineMarker> ());
- var extraMarker = Document.GetExtendingTextMarker (loc.Line) as IActionTextLineMarker;
- if (extraMarker != null && !oldMarkers.Contains (extraMarker))
- newMarkers.Add (extraMarker);
foreach (var marker in newMarkers) {
if (oldMarkers.Contains (marker))
continue;
@@ -2989,10 +2986,6 @@ namespace Mono.TextEditor
// Check if line is beyond the document length
if (line == null) {
DrawScrollShadow (cr, x, y, _lineHeight);
-
- var marker = Document.GetExtendingTextMarker (lineNr);
- if (marker != null)
- marker.Draw (textEditor, cr, lineNr, lineArea);
return;
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
index e4eb626b98..91db517e37 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
@@ -856,13 +856,23 @@ namespace MonoDevelop.SourceEditor
}
}
- public void Draw (MonoTextEditor editor, Cairo.Context cr, int lineNr, Cairo.Rectangle lineArea)
+ public void Draw (MonoTextEditor editor, Cairo.Context g, int lineNr, Cairo.Rectangle lineArea)
{
+ using (var layout = new Pango.Layout (editor.PangoContext)) {
+ g.Save ();
+ editor.EditorTheme.TryGetColor (EditorThemeColors.Foreground, out HslColor color);
+ g.SetSourceColor (color);
+ g.Translate (lineArea.X, lineArea.Y - editor.LineHeight * 2);
+ layout.SetText ("Line " + lineNr);
+ g.ShowLayout (layout);
+ g.Restore ();
+ }
+
}
public double GetLineHeight (MonoTextEditor editor)
{
- return editor.LineHeight * 3 / 2;
+ return editor.LineHeight * 3;
}
}
@@ -931,6 +941,10 @@ namespace MonoDevelop.SourceEditor
}
document.TextChanged += OnTextReplaced;
+ //document.AddMarker (5, new MyExtendingLineMarker ());
+ //document.AddMarker (7, new MyExtendingLineMarker ());
+ //document.AddMarker (10, new MyExtendingLineMarker ());
+
return TaskUtil.Default<object>();
}
diff --git a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Document/TextDocument.cs b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Document/TextDocument.cs
index 895e248343..d9e440a2e2 100644
--- a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Document/TextDocument.cs
+++ b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Document/TextDocument.cs
@@ -217,7 +217,6 @@ namespace Mono.TextEditor
this.VsTextDocument.FileActionOccurred += this.OnTextDocumentFileActionOccured;
- TextChanging += HandleSplitterLineSegmentTreeLineRemoved;
foldSegmentTree.tree.NodeRemoved += HandleFoldSegmentTreetreeNodeRemoved;
this.diffTracker.SetTrackDocument(this);
}
@@ -1548,7 +1547,11 @@ namespace Mono.TextEditor
List<TextLineMarker> extendingTextMarkers = new List<TextLineMarker> ();
public IEnumerable<DocumentLine> LinesWithExtendingTextMarkers {
get {
- return from marker in extendingTextMarkers where marker.LineSegment != null select marker.LineSegment;
+ foreach (var marker in extendingTextMarkers) {
+ var line = marker.LineSegment;
+ if (line != null)
+ yield return line;
+ }
}
}
@@ -1794,31 +1797,6 @@ namespace Mono.TextEditor
#endregion
- void HandleSplitterLineSegmentTreeLineRemoved (object sender, TextChangeEventArgs e)
- {
- for (int i = 0; i < e.TextChanges.Count; ++i) {
- var change = e.TextChanges[i];
- var line = GetLineByOffset (change.Offset);
- if (line == null)
- continue;
- var endOffset = change.Offset + change.RemovalLength;
- var offset = line.Offset;
- do {
- foreach (TextLineMarker marker in GetMarkers (line)) {
- if (marker is IExtendingTextLineMarker) {
- UnRegisterVirtualTextMarker ((IExtendingTextLineMarker)marker);
- lock (extendingTextMarkers) {
- extendingTextMarkers.Remove (marker);
- OnHeightChanged (EventArgs.Empty);
- }
- }
- }
- offset += line.LengthIncludingDelimiter;
- line = line.NextLine;
- } while (line != null && offset < endOffset);
- }
- }
-
public bool Contains (int offset)
{
return new TextSegment (0, Length).Contains (offset);
@@ -1976,33 +1954,6 @@ namespace Mono.TextEditor
}
}
- Dictionary<int, IExtendingTextLineMarker> virtualTextMarkers = new Dictionary<int, IExtendingTextLineMarker> ();
- public void RegisterVirtualTextMarker (int lineNumber, IExtendingTextLineMarker marker)
- {
- virtualTextMarkers[lineNumber] = marker;
- }
-
- public IExtendingTextLineMarker GetExtendingTextMarker (int lineNumber)
- {
- IExtendingTextLineMarker result;
- if (virtualTextMarkers.TryGetValue (lineNumber, out result))
- return result;
- return null;
- }
-
- /// <summary>
- /// un register virtual text marker.
- /// </summary>
- /// <param name='marker'>
- /// marker.
- /// </param>
- public void UnRegisterVirtualTextMarker (IExtendingTextLineMarker marker)
- {
- var keys = new List<int> (from pair in virtualTextMarkers where pair.Value == marker select pair.Key);
- keys.ForEach (key => { virtualTextMarkers.Remove (key); CommitLineUpdate (key); });
- }
-
-
#region Diff