I have no idea how to reproduce this, but every so often after a paste operation into a RadRichTextBox, the host thread becomes unresponsive to user input. The message pump is still running but the following unhandled exception gets thrown in a tight infinite loop. The only way to close the window is to right click on the taskbar button.
System.NullReferenceException
Message: Object reference not set to an instance of an object.
Call Stack:
at Telerik.Windows.Documents.Layout.LayoutElement.SetParent(LayoutElement newParent)
at Telerik.Windows.Documents.Layout.LayoutBox.EnsureParent()
at Telerik.Windows.Documents.Layout.LayoutBox.get_Parent()
at Telerik.Windows.Documents.Layout.FormattingSymbolLayoutBox.get_IsEndOfCell()
at Telerik.Windows.Documents.Layout.FormattingSymbolLayoutBox.GetFormattingSymbolVisual()
at Telerik.Windows.Documents.SpanBoxPositionHandler.get_Location()
at Telerik.Windows.Documents.UI.DocumentWebLayoutPresenter.GetViewPointFromDocumentPosition(DocumentPosition position)
at Telerik.Windows.Controls.RichTextBoxUI.PasteOptionsPopup.CalculateLocation()
at Telerik.Windows.Controls.RichTextBoxUI.PasteOptionsPopup.OnOwnerLayoutUpdated(Object sender, EventArgs e)
at System.Windows.ContextLayoutManager.fireLayoutUpdateEvent()
at System.Windows.ContextLayoutManager.UpdateLayout()
at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
this.radRichTextBox.PreviewEditorKeyDown += (sender, args) =>
{
if (Keyboard.Modifiers.HasFlag(ModifierKeys.Alt) && Keyboard.Modifiers.HasFlag(ModifierKeys.Control) && args.Key == Key.E)
{
args.SuppressDefaultAction = true;
args.OriginalArgs.Handled = true;
this.radRichTextBox.Insert("€");
}
};PdfFormatProvider creates an invalid PDF document.
Workaround:
RadDocument radDocument = null;
XamlFormatProvider xamlformatProvider = new XamlFormatProvider();
using (FileStream inputStream = new FileStream("input.xaml", FileMode.Open))
{
Console.WriteLine("reading input file");
radDocument = xamlformatProvider.Import(inputStream);
}
var provider = new Telerik.Windows.Documents.FormatProviders.OpenXml.Docx.DocxFormatProvider();
var bytes = provider.Export(radDocument);
var provider2 = new Telerik.Windows.Documents.Flow.FormatProviders.Docx.DocxFormatProvider();
var flowDoc = provider2.Import(bytes);
var provider3 = new Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider();
using (Stream output = File.OpenWrite(@"output.pdf"))
{
Console.WriteLine("writing output file");
provider3.Export(flowDoc, output);
}
Console.WriteLine("done...");
Console.ReadKey();
The paste options popup stays visible when the window is deactivated
Workaround:
private void MainWindow_Deactivated(object sender, EventArgs e)