Browse Source

Fix SD-1734 - 2 or 3 sets of Fold Markers shown with open .xaml file

pull/2/head
Daniel Grunwald 16 years ago
parent
commit
b2a32bf877
  1. 4
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  2. 28
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs
  3. 8
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/FoldingManagerAdapter.cs
  4. 2
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/IFoldingManager.cs
  5. 1
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlFoldingManager.cs
  6. 9
      src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlLanguageBinding.cs
  7. 1
      src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin
  8. 5
      src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj
  9. 4
      src/AddIns/DisplayBindings/XmlEditor/Test/Utils/FakeFoldingManager.cs

4
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs

@ -546,9 +546,9 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -546,9 +546,9 @@ namespace ICSharpCode.AvalonEdit.AddIn
}
}
iconBarManager.UpdateClassMemberBookmarks(parseInfo);
primaryTextEditor.UpdateParseInformation(parseInfo);
primaryTextEditor.UpdateParseInformationForFolding(parseInfo);
if (secondaryTextEditor != null)
secondaryTextEditor.UpdateParseInformation(parseInfo);
secondaryTextEditor.UpdateParseInformationForFolding(parseInfo);
}
public void Dispose()

28
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs

@ -71,7 +71,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -71,7 +71,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
if (e.PropertyName == "HighlightBrackets")
HighlightBrackets(null, e);
else if (e.PropertyName == "EnableFolding")
UpdateParseInformation();
UpdateParseInformationForFolding();
else if (e.PropertyName == "HighlightSymbol") {
if (this.caretReferencesRenderer != null)
this.caretReferencesRenderer.ClearHighlight();
@ -252,15 +252,15 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -252,15 +252,15 @@ namespace ICSharpCode.AvalonEdit.AddIn
toolTip.Closed += ToolTipClosed;
}
toolTip.PlacementTarget = this; // required for property inheritance
if(args.ContentToShow is string) {
toolTip.Content = new TextBlock
toolTip.Content = new TextBlock
{
Text = args.ContentToShow as string,
TextWrapping = TextWrapping.Wrap
};
}
else
else
toolTip.Content = args.ContentToShow;
toolTip.IsOpen = true;
@ -434,14 +434,26 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -434,14 +434,26 @@ namespace ICSharpCode.AvalonEdit.AddIn
}
#region UpdateParseInformation - Folding
void UpdateParseInformation()
void UpdateParseInformationForFolding()
{
UpdateParseInformation(ParserService.GetExistingParseInformation(this.Adapter.FileName));
UpdateParseInformationForFolding(ParserService.GetExistingParseInformation(this.Adapter.FileName));
}
bool disableParseInformationFolding;
public bool DisableParseInformationFolding {
get { return disableParseInformationFolding; }
set {
if (disableParseInformationFolding != value) {
disableParseInformationFolding = value;
UpdateParseInformationForFolding();
}
}
}
public void UpdateParseInformation(ParseInformation parseInfo)
public void UpdateParseInformationForFolding(ParseInformation parseInfo)
{
if (!CodeEditorOptions.Instance.EnableFolding)
if (!CodeEditorOptions.Instance.EnableFolding || disableParseInformationFolding)
parseInfo = null;
IServiceContainer container = this.Adapter.GetService(typeof(IServiceContainer)) as IServiceContainer;

8
src/AddIns/DisplayBindings/XmlEditor/Project/Src/FoldingManagerAdapter.cs

@ -30,5 +30,13 @@ namespace ICSharpCode.XmlEditor @@ -30,5 +30,13 @@ namespace ICSharpCode.XmlEditor
foldingManager.UpdateFoldings(newFoldings, firstErrorOffset);
}
}
public void Dispose()
{
if (foldingManager != null) {
FoldingManager.Uninstall(foldingManager);
foldingManager = null;
}
}
}
}

2
src/AddIns/DisplayBindings/XmlEditor/Project/Src/IFoldingManager.cs

@ -7,7 +7,7 @@ using ICSharpCode.AvalonEdit.Folding; @@ -7,7 +7,7 @@ using ICSharpCode.AvalonEdit.Folding;
namespace ICSharpCode.XmlEditor
{
public interface IFoldingManager
public interface IFoldingManager : IDisposable
{
void UpdateFoldings(IEnumerable<NewFolding> newFoldings, int firstErrorOffset);
}

1
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlFoldingManager.cs

@ -53,6 +53,7 @@ namespace ICSharpCode.XmlEditor @@ -53,6 +53,7 @@ namespace ICSharpCode.XmlEditor
public void Dispose()
{
document.Changed -= DocumentChanged;
foldingManager.Dispose();
}
public IList<FoldingRegion> GetFolds(ITextBuffer textBuffer)

9
src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlLanguageBinding.cs

@ -10,6 +10,7 @@ namespace ICSharpCode.XmlEditor @@ -10,6 +10,7 @@ namespace ICSharpCode.XmlEditor
public class XmlLanguageBinding : DefaultLanguageBinding
{
XmlFoldingManager foldingManager;
AvalonEdit.AddIn.CodeEditorView codeEditorView;
public override IFormattingStrategy FormattingStrategy {
get { return new XmlFormattingStrategy(); }
@ -17,6 +18,11 @@ namespace ICSharpCode.XmlEditor @@ -17,6 +18,11 @@ namespace ICSharpCode.XmlEditor
public override void Attach(ITextEditor editor)
{
// HACK: disable SharpDevelop's built-in folding
codeEditorView = editor.GetService(typeof(AvalonEdit.TextEditor)) as AvalonEdit.AddIn.CodeEditorView;
if (codeEditorView != null)
codeEditorView.DisableParseInformationFolding = true;
foldingManager = new XmlFoldingManager(editor);
foldingManager.UpdateFolds();
foldingManager.Start();
@ -29,6 +35,9 @@ namespace ICSharpCode.XmlEditor @@ -29,6 +35,9 @@ namespace ICSharpCode.XmlEditor
foldingManager.Stop();
foldingManager.Dispose();
if (codeEditorView != null)
codeEditorView.DisableParseInformationFolding = false;
base.Detach();
}
}

1
src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin

@ -14,6 +14,7 @@ @@ -14,6 +14,7 @@
<Manifest>
<Identity name="ICSharpCode.XmlEditor"/>
<Dependency addin="ICSharpCode.AvalonEdit" requirePreload="true"/>
</Manifest>
<Path name="/AddIns/DefaultTextEditor/Formatter/XML">

5
src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj

@ -230,5 +230,10 @@ @@ -230,5 +230,10 @@
<Name>ICSharpCode.SharpDevelop.Widgets</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj">
<Project>{0162E499-42D0-409B-AA25-EED21F75336B}</Project>
<Name>AvalonEdit.AddIn</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
</Project>

4
src/AddIns/DisplayBindings/XmlEditor/Test/Utils/FakeFoldingManager.cs

@ -24,5 +24,9 @@ namespace XmlEditor.Tests.Utils @@ -24,5 +24,9 @@ namespace XmlEditor.Tests.Utils
NewFoldsPassedToUpdateFoldings.AddRange(newFoldings);
FirstErrorOffset = firstErrorOffset;
}
public void Dispose()
{
}
}
}

Loading…
Cancel
Save