If header/footer containing annotations is set to a document using RadDocumentEditor.ChangeSectionHeader or ChangeSectionFooter methods, the annotations in the body of the header/footer are not paired in the resulting document. When such document is exported to XAML, NullReferenceException is thrown in the ReindexAnnotationMarkers internal method. Workaround: - Do not use RadDocumentEditor to set the footer: //editor.ChangeSectionFooter(radDocument.Sections.First, HeaderFooterType.Default, new Footer { Body = footerRadDocument }); radDocument.Sections.First.Footers.Default.Body = footerRadDocument; - Manually "fix" the cloned footer body before the export: ((ISupportInitialize)radDocument.Sections.First.Footers.Default.Body).EndInit();
NullReferenceException is thrown when documents are exported to PDF using PdfFormatProvider in multiple threads. Available in R1 2018 Official Release Version.
When Justify text alignment is applied to a paragraph, it should not increase the space between word which are before the last tab symbol for each line. Steps to reproduce: - Open RadRichTextBox in Paged layout mode, default A4 section size - Type the following text: -- "Welcome Welcome Welcome Welcome Welcome " -- then tab symbol -- then "test1 test1 uncharacteristically" - Switch paragraph alignment to Justify. Expected: The space between 'Welcome' words remains the same in Left and Justify alignments. Actual: The space between 'Welcome' words is increased when Justify alignment is chosen, as compared to when Left is chosen.
There is a memory leak related to the referenced elements by style in the style repository from the main document. The referenced elements are from headers and footers.
When applying a table style, the previously applied local properties to a table or cell should be cleared and the ones defined by the style should be used. Workaround: Create a new Table and apply the style to it; then copy the properties to the existing table in the document private void RadRichTextBox_CommandExecuting(object sender, CommandExecutingEventArgs e) { if (e.Command is ChangeStyleNameCommand && this.radRichTextBox.Document.CaretPosition.IsPositionInsideTable) { StyleDefinition style = this.radRichTextBox.Document.StyleRepository.GetValueOrNull(e.CommandParameter.ToString()); if (style.Type == StyleType.Table) { Table currentTable = this.radRichTextBox.Document.CaretPosition.GetCurrentTableBox().AssociatedTable; currentTable.Borders = new TableBorders(style.TableProperties.Borders); Table tableWithStyle = new Table(currentTable.Rows.Count, currentTable.Rows.First.Cells.Count); tableWithStyle.Style = this.radRichTextBox.Document.StyleRepository.GetValueOrNull(e.CommandParameter.ToString()); for (int rowIndex = 0; rowIndex < currentTable.Rows.Count; rowIndex++) { for (int columnIndex = 0; columnIndex < currentTable.Rows.First.Cells.Count; columnIndex++) { TableCell cell = currentTable.Rows.Skip(rowIndex).First().Cells.Skip(columnIndex).First(); TableCell cellWithStyle = tableWithStyle.Rows.Skip(rowIndex).First().Cells.Skip(columnIndex).First(); cell.Background = cellWithStyle.Background; cell.Borders = cellWithStyle.Borders; } } this.radRichTextBox.UpdateEditorLayout(); e.Cancel = true; } } }
Tapping on a selected region in a document should show the selection mini toolbar. A second tap should clear the selection and then place the cursor on the tapped location, but this does not happen. Subsequent tap should select the entire word and another tap should select the paragraph.
The "initial" CSS keyword applies the initial value of a property to an element. At this point, the result shown in RadRichTextBox can be unexpected as this value is not considered but the style evaluation falls back to the default styles defined for the control and doesn't consider the ones defined in the document style. For example, setting background-color: initial; always results in black background.
In MS Word, the users can change the alignment of a table using the buttons related to Paragraph alignment. To do that, the whole table must be selected. In RadRichTextBox, selecting a Table and pressing one of the buttons, let say for Right alignment, leads to aligning the content of the table and not the table itself. Workaround: private void RadRichTextBox_CommandExecuting(object sender, CommandExecutingEventArgs e) { if (e.Command is ChangeTextAlignmentCommand && this.radRichTextBox.Document.Selection.Ranges.Count == 1 && this.radRichTextBox.Document.Selection.Ranges.First.RangeType == SelectionRangeType.Table && e.CommandParameter.ToString() != "Justify") { e.Cancel = true; RadDocumentEditor editor = new RadDocumentEditor(this.radRichTextBox.Document); RadHorizontalAlignment newAlignment = (RadHorizontalAlignment) Enum.Parse(typeof(RadHorizontalAlignment), e.CommandParameter.ToString()); editor.ChangeTableHorizontalAlignment(newAlignment); } } NOTE: With this approach, the toggle buttons in the UI are not updated properly and this should be additionally handled.
Mail merge is not working for the first record in the items source when the items source is IEnumerable with deferred execution. Workaround: convert the collection to list.
'Decrement paragraph left indent' command can set negative left indent which makes bullets/numbering of a list clipped. Instead, it shouldn't be executed if the bullets/numbering would become invisible. Workaround: Cancel the command in CommandExecuting event: this.radRichTextBox.CommandExecuting += (sender, e) => { if (e.Command == this.radRichTextBox.Commands.DecrementParagraphLeftIndentCommand) { if (this.radRichTextBox.Document.Selection.GetSelectedParagraphs().Any(p => p.IsInList && p.LeftIndent <= 24)) { e.Cancel = true; } } };
The exception is thrown by the SystemFontsManager internal class from Telerik.Windows.Documents.Core, so it can observed when using RadPdfViewer, RadRichTextBox, RadSpreadsheet. The reason is not clear, posssible causes are: - Corrupted fonts after upgrade from Windows XP - Enabling of Block untrusted fonts feature (https://docs.microsoft.com/en-us/windows/threat-protection/block-untrusted-fonts-in-enterprise ) The call stack is as follows: System.TypeInitializationException: The type initializer for 'Telerik.Windows.Documents.Core.Fonts.SystemFontsManager' threw an exception. ---> System.IO.FileNotFoundException: Unable to find the specified file. at MS.Internal.Text.TextInterface.Native.Util.ConvertHresultToException(Int32 hr) at MS.Internal.Text.TextInterface.FontList.get_Item(UInt32 A_0) at MS.Internal.Text.TextInterface.FontList.FontsEnumerator.get_Current() at MS.Internal.FontFace.TypefaceCollection.Enumerator.get_Current() at System.Windows.Media.Fonts.TypefaceCollection.<GetEnumerator>d__11.MoveNext() at Telerik.Windows.Documents.Core.Fonts.SystemFontsManager..cctor() Workaround: Manually delete all registry key values in Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts pointing to files outside of the Fonts folder.
NullReferenceException is thrown when some of the parts in the template of SelectionMiniToolBar are missing, e.g. bold button, italic button, etc.; and selected text properties are changed while the selection mini tool bar is still opened, for example by clicking buttons in the ribbon UI. Available in LIB Version 2017.3.1225.
Show a preview of how a feature affects the document as the user hovers over the different options in the user interface, e.g.: - when a style is hovered in the styles gallery, temporarily apply the style to the affected text; - when a font size is hovered in the font size combo (in the ribbon or in the SelectionMiniToolBar), temporarily apply the hovered font size to the affected text.
SelectionMiniToolBar and ImageMiniToolBar stay visible when keys associated with commands bindings are pressed, for example: - When Delete key is pressed - When arrow keys are pressed The expected behavior is mini tool bars to hide on each key press. Fix available in LIB Version 2017.3.1211.
Currently, blockquote tags are imported as paragraphs. Change the mechanism so they can be imported as citations.
When the tag \sl (line spacing) has value 0, according to the specification it should be calculated according to the highest character in the line, which corresponds to the LineSpacingType single. Instead, in RTB this text disappears. Workaround: private void RadRichTextBox_DocumentChanged(object sender, EventArgs e) { foreach (var paragraph in this.radRichTextBox.Document.EnumerateChildrenOfType<Paragraph>()) { if (paragraph.LineSpacing == 0) { paragraph.LineSpacing = 1; } } } Fix available in LIB Version 2017.3.1211.
In Word and WordPad when hitting Ctrl+Down Arrow the cursor moves to the start of the next paragraph, until the last paragraph in the document where it moves to the end of the document. In Telerik editor it moves to the end of the paragraph. Steps to reproduce: - Load a document with multiple lines of text - Click near the top of the document and hit Ctrl+Down repeatedly Expected: The cursor moves down one paragraph at a time with the cursor at the start of the paragraph Actual: The cursor moves down one paragraph at a time with the cursor at the end of the paragraph Fix available in LIB Version 2017.3.1218.
When a document with NumPages field in header or footer is exported to PDF, NumPages field is evaluated wrongly - 1 for the first page, 2 for the second page, etc. The bug is regression, introduced with R3 2017 SP1 (2017_3_1018). Fix available in LIB Version 2017.3.1211.
Permission's range bracket disappears when it is positioned on the last line of the page.
Focus events (GotFocus, LostFocus) are raised inconsistently for RadRichTextBox, due to the internal translation of the focus to the Caret. Scenarios: 1. Clicking inside the control, when the focus is already inside the control, triggers LostFocus, GotFocus, LostFocus, GotFocus events. 2. Switching internal editors (headers/footers) raises GotFocus and LostFocus. 3. If the control is inherited and OnGotFocus/OnLostFocus are overriden, they are never called (despite OnGotFocus one time in the beginning The behavior is problematic, as this events are useful for custom validation scenarios.