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();
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.
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.
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.
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.
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.
'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; } } };
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.
Permission's range bracket disappears when it is positioned on the last line of the page.
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.
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.
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.
Currently, blockquote tags are imported as paragraphs. Change the mechanism so they can be imported as citations.
Hyphenated words (like "good-looking", "dry-clean", "twenty-seven") should be passed to the spellchecker as a whole word. The current mechanism works well enough for English, however, for some languages and dictionaries it is necessary to pass the whole hyphenated word to the spellchecker.
When RadRichTextBox.DocumentInheritsDefaultStyleSettings is set to true, lists in the document are exported to HTML with Verdana font, instead of with the font applied in the UI. Workaround: Use modification of the document default styles ("Normal") instead of setting DocumentInheritsDefaultStyleSettings to true, e.g.: this.radRichTextBox.Document.StyleRepository["Normal"].SpanProperties.FontFamily = new FontFamily("Segoe UI");
For some font sizes, the end of the last letter or the start of first letter is clipped. The problem is most visible with italic styles and large font sizes, but is present even for small sizes and regular style.
Workaround is to use the Classes StylesExportMode.
Click event are not raised, and the command in the Command property is not executed, when a Button is placed inside InlineUIContainer, and is tapped on a touch device. Workaround: One way to work around this is by setting TouchManager.TouchMode of the button to None, which will exclude the button from the TouchManager and will let the .NET events reach it. The other is to use the TouchManager Tap event instead of Command or Click.
When a table is selected, the SelectionMiniToolbar should have a borders drop down menu which allows setting and editing of borders without entering the table borders dialog.