diff options
author | Mike Krüger <mkrueger@xamarin.com> | 2016-05-04 10:41:23 +0300 |
---|---|---|
committer | Mike Krüger <mkrueger@xamarin.com> | 2016-05-04 10:41:23 +0300 |
commit | 8674d43125b321c940473248dc74a00e7e23ae8c (patch) | |
tree | 13928a52ea2aef3b930deedb0c6890ac9f50669f /main/src/core/Mono.Texteditor | |
parent | 1bb63d939e82bf58ab978601f550de963960dc67 (diff) |
Fixed 'Bug 40770 - Search Result links don't display properly if code
is in a collapsed region in XS 6.1'
It's caused by a race - we made the loading async this seems to be a
side effect of that.
Diffstat (limited to 'main/src/core/Mono.Texteditor')
-rw-r--r-- | main/src/core/Mono.Texteditor/Mono.TextEditor/Document/TextDocument.cs | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/Document/TextDocument.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/Document/TextDocument.cs index 9b6f9cccee..82a5c81650 100644 --- a/main/src/core/Mono.Texteditor/Mono.TextEditor/Document/TextDocument.cs +++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/Document/TextDocument.cs @@ -1067,7 +1067,6 @@ namespace Mono.TextEditor if (newSegments == null) { return; } - InterruptFoldWorker (); bool update; if (!startTask) { @@ -1090,10 +1089,10 @@ namespace Mono.TextEditor var segments = UpdateFoldSegmentWorker (newSegments, out update, token); if (token.IsCancellationRequested) return; + foldedSegments = segments; Gtk.Application.Invoke (delegate { if (token.IsCancellationRequested) return; - foldedSegments = segments; InformFoldTreeUpdated (); if (update) CommitUpdateAll (); @@ -1275,28 +1274,16 @@ namespace Mono.TextEditor public void EnsureOffsetIsUnfolded (int offset) { - bool needUpdate = false; foreach (FoldSegment fold in GetFoldingsFromOffset (offset).Where (f => f.IsFolded && f.Offset < offset && offset < f.EndOffset)) { - needUpdate = true; fold.IsFolded = false; } - if (needUpdate) { - RequestUpdate (new UpdateAll ()); - CommitDocumentUpdate (); - } } public void EnsureSegmentIsUnfolded (int offset, int length) { - bool needUpdate = false; foreach (var fold in GetFoldingContaining (offset, length).Where (f => f.IsFolded)) { - needUpdate = true; fold.IsFolded = false; } - if (needUpdate) { - RequestUpdate (new UpdateAll ()); - CommitDocumentUpdate (); - } } internal void InformFoldTreeUpdated () @@ -1308,13 +1295,16 @@ namespace Mono.TextEditor public event EventHandler FoldTreeUpdated; HashSet<FoldSegment> foldedSegments = new HashSet<FoldSegment> (); + public IEnumerable<FoldSegment> FoldedSegments { get { return foldedSegments; } } + internal void InformFoldChanged (FoldSegmentEventArgs args) { + foldSegmentTask?.Wait (); if (args.FoldSegment.IsFolded) { foldedSegments.Add (args.FoldSegment); } else { |