diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeSupport.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeSupport.cs
index 91d7cdc0fb..7e34cc1911 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeSupport.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeSupport.cs
@@ -107,8 +107,6 @@ namespace ICSharpCode.AvalonEdit.Editing
currentContext = ImeNativeWrapper.ImmGetContext(defaultImeWnd);
}
previousContext = ImeNativeWrapper.ImmAssociateContext(hwndSource.Handle, currentContext);
- Debug.Assert(hwndSource != null);
- Debug.Assert(currentContext != null);
hwndSource.AddHook(WndProc);
// UpdateCompositionWindow() will be called by the caret becoming visible
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Folding/FoldingElementGenerator.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Folding/FoldingElementGenerator.cs
index 4113a66510..de29d032d2 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Folding/FoldingElementGenerator.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Folding/FoldingElementGenerator.cs
@@ -73,10 +73,19 @@ namespace ICSharpCode.AvalonEdit.Folding
///
public override int GetFirstInterestedOffset(int startOffset)
{
- if (foldingManager != null)
+ if (foldingManager != null) {
+ foreach (FoldingSection fs in foldingManager.GetFoldingsContaining(startOffset)) {
+ // Test whether we're currently within a folded folding (that didn't just end).
+ // If so, create the fold marker immediately.
+ // This is necessary if the actual beginning of the fold marker got skipped due to another VisualElementGenerator.
+ if (fs.IsFolded && fs.EndOffset > startOffset) {
+ //return startOffset;
+ }
+ }
return foldingManager.GetNextFoldedFoldingStart(startOffset);
- else
+ } else {
return -1;
+ }
}
///
@@ -86,7 +95,7 @@ namespace ICSharpCode.AvalonEdit.Folding
return null;
int foldedUntil = -1;
FoldingSection foldingSection = null;
- foreach (FoldingSection fs in foldingManager.GetFoldingsAt(offset)) {
+ foreach (FoldingSection fs in foldingManager.GetFoldingsContaining(offset)) {
if (fs.IsFolded) {
if (fs.EndOffset > foldedUntil) {
foldedUntil = fs.EndOffset;