Unplanned
Last Updated: 31 Oct 2018 07:53 by ADMIN
Popups (ImageMiniToolBar and SelectionMiniToolBar) stay on most top (act as if "Always on Top" is set to them) even if they had lost focus. 

Workaround: Attach to LostFocus or LostKeyboardFocus events and hide the toolbar in the handler:
this.radRichTextBox.LostFocus += (sender, e) =>
{
    this.radRichTextBox.SelectionMiniToolBar.Hide();
    this.radRichTextBox.ImageMiniToolBar.Hide();
};

Completed
Last Updated: 23 Feb 2017 12:38 by ADMIN
ADMIN
Created by: Andrew
Comments: 1
Category: RichTextBox
Type: Feature Request
2
When paragraph is in list, the user can choose "Set Numbering Value" which will change the appropriate level Starting Index and will create a new list (or continue the previous one).
Completed
Last Updated: 25 Apr 2023 11:01 by ADMIN
Release LIB 2023.1.509 (09 May 2023)
Selecting the content inside annotation range and deleting it removes the annotation range start from the document.
Unplanned
Last Updated: 31 Oct 2018 07:53 by Iva
The display mode of all fields is changed to Code, so that the export could work correctly and nested fields would be persisted.
Consider optimizing the algorithm, so that fields take less time to be exported.
Completed
Last Updated: 09 Jun 2020 13:53 by ADMIN
Release R2 2020 SP1
Import the type of the <ul> and <ol> tag, e.g. <ul type="disc"> or <ul type=circle>. Supported values are disc, circle, square.
Completed
Last Updated: 21 Jan 2021 09:29 by ADMIN

Depending on the current layout of the document, invoking SetPosition() for a specific location might result in positioning the caret on the line prior to the expected one.

Steps to reproduce:

  • Create a document using the following code:

radRichTextBox.Insert("one: ");
radRichTextBox.Insert(Environment.NewLine);
radRichTextBox.Insert("two: ");
radRichTextBox.Insert(Environment.NewLine);
radRichTextBox.Insert("tree: ");
radRichTextBox.Insert(Environment.NewLine);
radRichTextBox.Insert("four: ");
radRichTextBox.Insert(Environment.NewLine);
radRichTextBox.Insert("five: ");
radRichTextBox.Insert(Environment.NewLine);
radRichTextBox.Insert("seks: ");
radRichTextBox.Insert(Environment.NewLine);
radRichTextBox.Insert("seven: ");
radRichTextBox.Insert(Environment.NewLine);
radRichTextBox.Insert("eitgh: ");
radRichTextBox.Insert(Environment.NewLine);
radRichTextBox.Insert("nine: ");
radRichTextBox.Insert(Environment.NewLine);
radRichTextBox.Insert("ten: ");

  • Place the caret at the end of the "nine: " line
  • Invoke SetPosition():

radRichTextBox.Document.CaretPosition.SetPosition(radRichTextBox.Document.CaretPosition.Location);
radRichTextBox.Focus();

Observed: The caret is positioned after "eitgh:"

Expected: The caret shouldn't change its position

Unplanned
Last Updated: 31 Oct 2018 07:53 by ADMIN
Add adorners for selecting table rows, table columns and table cells with single click, similar to the ones in MS Word
Unplanned
Last Updated: 31 Oct 2018 07:53 by ADMIN
ADMIN
Created by: Tanya
Comments: 0
Category: RichTextBox
Type: Feature Request
2
Currently <big> and <small> tags are not supported and the text inside is not imported.
Unplanned
Last Updated: 31 Oct 2018 07:53 by ADMIN
All Microsoft Office applications (Outlook, Exchange, Word, Excel) that can produce HTML are creating them with all of the CSS stylings commented with HTML comment, as follows: <style><!-- CSS --></style>
This is a problem as RadRichTextBox's HTML parser does not import the CSS when it is commented like that.

Workaround: Remove the HTML comment from the CSS style tag.
Unplanned
Last Updated: 31 Oct 2018 08:11 by ADMIN
ADMIN
Created by: Mihail
Comments: 2
Category: RichTextBox
Type: Feature Request
2

Introduce Split Table Command. In MS Word, the command is in Table Tools -> Layout -> Merge -> Split table. Workaround: Use the RadDocumentEditor API to split the table:

 

var tableRowBox = this.radRichTextBox.Document.CaretPosition.GetCurrentTableRowBox();
if (tableRowBox != null)
{
    this.radRichTextBox.BeginUndoGroup();

    this.radRichTextBox.Document.Selection.Clear();

    var currentRow = tableRowBox.AssociatedTableRow;

    DocumentPosition start = new DocumentPosition(currentRow.GetRootDocument());
    start.MoveToStartOfDocumentElement(currentRow);

    DocumentPosition end = new DocumentPosition(start);
    end.MoveToEndOfDocumentElement(currentRow.Table.Rows.Last);

    this.radRichTextBox.Document.Selection.SetSelectionStart(start);
    this.radRichTextBox.Document.Selection.AddSelectionEnd(end);

    this.radRichTextBox.Cut();

    this.radRichTextBox.InsertParagraph();
    this.radRichTextBox.Paste();

    this.radRichTextBox.EndUndoGroup("Split table");
}

 

Completed
Last Updated: 11 Aug 2016 14:04 by ADMIN
ADMIN
Created by: Andrew
Comments: 1
Category: RichTextBox
Type: Feature Request
2
Japanese users use distributed text alignment, which justifies all lines including the last one.
Completed
Last Updated: 11 Dec 2019 13:35 by ADMIN
Release LIB 2019.3.1216 (12/16/2019)
When trying to import a document containing bookmark and BookmarkRangeEnd is after the last paragraph, a StackOverflowException is thrown in IntervalNode while trying to rebuild the document cache. (RadDocumentChildrenCache.RebuildTree()).

The same could be observed if the bookmark end is last in the header/footer, between table cells in the RadDocument body, or when all paragraphs after the bookmark range end are hidden (with vanish property).

Workaround: Detect the problematic annotations and remove them:
foreach (var rangeStart in document.EnumerateChildrenOfType<AnnotationRangeStart>())
{
    if (rangeStart.End == null || rangeStart.End.Parent == null || rangeStart.End.Parent.Parent == null)
    {
        //MessageBox.Show("This indicates a problem.");
        rangeStart.Parent.Children.Remove(rangeStart);
    }
}

Note: Until 2017 R2 SP1 release StackOverflowException is thrown, after this release an ArgumentException should be thrown.
Unplanned
Last Updated: 20 Feb 2018 14:11 by ADMIN
ADMIN
Created by: Tanya
Comments: 0
Category: RichTextBox
Type: Feature Request
2
The content of a page can be aligned vertically. In DOCX, this is a property of the section and is defined with the vAlign element.

<w:sectPr>
…
<w:vAlign w:val="center" />
</w:sectPr>
Unplanned
Last Updated: 31 Oct 2018 07:53 by ADMIN
When image watermark is set and its height is configured through DocumentWatermarkSettings.ImageSettings.Size.Height, the height is not respected.

Steps to reproduce:
1. Insert a Watermark with size
           var watermarkSettings = new DocumentWatermarkSettings()
            {
                Type = WatermarkType.ImageWatermark,
                ImageSettings = new WatermarkImageSettings()
                {
                    UriSource = new Uri("c:\1.jpg"),
                    Size = new Size(200, 300)
                }
            };

Expected: The image is with the specified width and height.
Actual: The height is different.
Unplanned
Last Updated: 19 Jul 2018 07:04 by ADMIN
ADMIN
Created by: Anna
Comments: 0
Category: RichTextBox
Type: Feature Request
2
At the moment the table properties, including table, table row and table cell properties don't have size validation, i.e. it is possible to set them to negative or zero values. Validation should be added where necessary.
Unplanned
Last Updated: 29 Sep 2020 13:15 by ADMIN
Currently, inserting a code block is processed by the RichTextBox's InsertCodeBlock() method which takes the whole code block at once. This leads to UI freezing when the code block is very long. 
Unplanned
Last Updated: 31 Oct 2018 07:53 by ADMIN
When a span or text is placed in <a> tag, but 'href' and 'name' attributes are missing, then the span/text is not imported from the HTML document.

Workaround: preprocess the HTML and add the 'href' attribute to all <a> elements.

Steps to reproduce:
1. Import the following HTML:

<html>
	<body>
		<a target="_blank">Some text</a>
	</body>
</html>

Expected: The hyperlink "Some text" is imported in the document.
Actual: The span "Some text" is not imported.
Unplanned
Last Updated: 06 Mar 2020 05:44 by ADMIN
Created by: Joshua
Comments: 0
Category: RichTextBox
Type: Bug Report
2

A reference in DocumentFragment to RadDocument (CopySource property) can cause a memory after copy-paste between RadDocument.

Workaround:

public static bool ReleaseClipboardExReferences(
    RadDocument document)
{
    dynamic clipboardEx = new DynamicProxyObject(typeof(ClipboardEx));

    if (clipboardEx.documentClipboardData?.CopySource is DynamicProxyObject copySource
        && object.ReferenceEquals(copySource.Instance, document))
    {
        clipboardEx.documentClipboardData = null;
        return true;
    }

    if (clipboardEx.CopiedDocumentFragment?.Fragment?.CopySource is DynamicProxyObject fragmentCopySource
        && object.ReferenceEquals(fragmentCopySource.Instance, document))
    {
        clipboardEx.CopiedDocumentFragment = null;
        return true;
    }

    return false;
}

Unplanned
Last Updated: 31 Oct 2018 07:53 by ADMIN
The width of the image is inherited from the table element it is in when it doesn't have a specific width set to it. Sample HTML reproducing the problem is:

<html>
	<body>
		<table style="width: 700px;">
			<tbody>
				<tr>
					<td>
						<img src="" />
					</td>
				</tr>
			</tbody>
		</table>
	</body>
</html>

Instead, the real size of the image should be used.

Workaround: Subscribe to LoadImageFromUri and set size to the image.

            settings.LoadImageFromUrl += (s, arg) =>
                {
                    if (arg.Url != null)
                    {
                        string extension = Path.GetExtension(arg.Url);
                        Uri uri = new Uri(arg.Url, UriKind.RelativeOrAbsolute);
                        System.Net.WebClient oWebClient = new System.Net.WebClient();

                        using (MemoryStream stream = new MemoryStream())
                        {
                            oWebClient.OpenRead(uri).CopyTo(stream);
                            arg.ImageElement.Init(stream, extension);
                            arg.ImageElement.Size = new Size(164, 80);

                            e.Handled = true;
                        }
                    }
                };
Unplanned
Last Updated: 19 Jul 2018 07:01 by ADMIN
RichTextBox interprets the div tag by adding a new line upon its closing. However, when the content of the div tag is a br tag, the whole combination should be treated as one new line.