Completed
Last Updated: 12 Feb 2016 07:26 by ADMIN
To reproduce:
- Open a document that contains symbols with the 2015 Q3 SP1 version.
- Export the document using the docx format.
- Open it again.

Workaround:
private void radRichTextEditor1_DocumentChanged(object sender, EventArgs e)
{
    this.SelectAllMatches("");
    this.radRichTextEditor1.ChangeFontFamily(new Telerik.WinControls.RichTextEditor.UI.FontFamily("Symbol"));
    this.SelectAllMatches("");
    this.radRichTextEditor1.ChangeFontFamily(new Telerik.WinControls.RichTextEditor.UI.FontFamily("Symbol"));
}
 
private void SelectAllMatches(string toSearch)
{
    this.radRichTextEditor1.Document.Selection.Clear();
    DocumentTextSearch search = new DocumentTextSearch(this.radRichTextEditor1.Document);
    foreach (var textRange in search.FindAll(toSearch))
    {
        this.radRichTextEditor1.Document.Selection.AddSelectionStart(textRange.StartPosition);
        this.radRichTextEditor1.Document.Selection.AddSelectionEnd(textRange.EndPosition);
    }
}
Completed
Last Updated: 12 Feb 2016 07:11 by ADMIN
Completed
Last Updated: 08 Feb 2016 11:50 by ADMIN
Completed
Last Updated: 06 Feb 2016 08:48 by ADMIN
To reproduce:

1. Install a font that is not part of the default ones.
2. Enter some text in RadRichTextEditor and use the installed font.
3. Export to pdf.
4. Uninstall the font.
5. Try to open the exported pdf. You will notice that the font is not embedded into the file and can not render the text correctly. Please refer to the attached sample pdf file with custom font.
Completed
Last Updated: 08 Jan 2016 06:31 by ADMIN
Note: it should be closed automatically when all words are corrected.

To reproduce:

1. Enter some misspelled words and open the context menu with right mouse click.
2. Show the SpellCheckingDialog.
3. Add a word to the dictionary. The SpellCheckingDialog will be closed immediately. However, if you press to ignore the word/words, the dialog remains opened.

Workaround: cancel the SpellCheckingDialog.FormClosing event except when the close button is clicked:
public Form1()
{
    InitializeComponent();
  
    this.radRichTextEditor1.IsSpellCheckingEnabled = true;
    RadButton buttonClose = ((SpellCheckingDialog)this.radRichTextEditor1.RichTextBoxElement.SpellCheckingDialog).Controls["buttonClose"] as RadButton;

    buttonClose.MouseDown += buttonClose_MouseDown;
    ((SpellCheckingDialog)this.radRichTextEditor1.RichTextBoxElement.SpellCheckingDialog).FormClosing += SpellCheckingDialog_FormClosing;
}

bool shouldClose = false;

private void buttonClose_MouseDown(object sender, MouseEventArgs e)
{
    shouldClose = true;
}


private void SpellCheckingDialog_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason != CloseReason.FormOwnerClosing)
    {
        e.Cancel = !shouldClose;
        shouldClose = false;
    }
}
Completed
Last Updated: 06 Jan 2016 11:00 by ADMIN
To reproduce:
- Export document with an inline UI elements to HTML.
- Import the document.

 Workaround:
- Manually export the UI elements information and then create new UI elements when the document is imported:
void ImportSettings_InlineUIContainerImporting(object sender, InlineUIContainerImportingEventArgs e)
{
    PropertyInfo property = typeof(InlineUIContainerImportingEventArgs).GetProperty("Handled");
    property.GetSetMethod(true).Invoke(e, new object[] { true });

    ObjectHandle handle = Activator.CreateInstance("Telerik.WinControls.UI", e.CommentContent);
    Object control = handle.Unwrap();
    InlineUIContainer container = new InlineUIContainer();
    RadElementUIContainer radContainer = new RadElementUIContainer(control as RadElement);
    container.UiElement = radContainer;
    container.Height = 30;
    container.Width = 300;
    e.TargetParagraph.Inlines.Add(container);
}
//export
private void btnWrite_Click(object sender, EventArgs e)
{
    HtmlFormatProvider provider = new HtmlFormatProvider();
    provider.ExportSettings.InlineUIContainerExporting += ExportSettings_InlineUIContainerExporting;         
  
    File.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\TelerikUITest.html", provider.Export(this.radRichTextEditor1.Document));
}

void ExportSettings_InlineUIContainerExporting(object sender, Telerik.WinForms.Documents.FormatProviders.Html.InlineUIContainerExportingEventArgs e)
{
    string control = ((RadElementUIContainer)e.InlineUIContainer.UiElement).Element.ToString();
    e.CommentContent = control;
}

Completed
Last Updated: 11 Dec 2015 16:27 by ADMIN
Declined
Last Updated: 11 Dec 2015 16:25 by ADMIN
Completed
Last Updated: 11 Dec 2015 13:47 by ADMIN
To reproduce, add a theme in design time and open the ThemeName drop down from the editor's SmartTag
Declined
Last Updated: 16 Nov 2015 15:59 by ADMIN
To reproduce:

1.Add some text to RadRichTextEditor.
2.Copy an image from a Word document and paste it to the RadRichTextEditor.
3.Export the document content with RtfFormatProvider.

When you try to open the exported .rtf file via WordPad, you will notice that the image is not loaded. Please refer to the attached files created by MS Word and RadRichTextEditor.
Completed
Last Updated: 02 Nov 2015 12:17 by ADMIN
To reproduce
Write a word in an RightToLeft language and then type "."
You will notice that the dot is moved to the end of the word.
Completed
Last Updated: 27 Oct 2015 07:34 by ADMIN
When some commands are executed the RibbonUI is not updated.
For example:
private void radButton1_Click(object sender, EventArgs e)
{
    ToggleCommentsCommand command = new ToggleCommentsCommand(radRichTextEditor1.RichTextBoxElement);
    command.Execute();
}

Workaround:
var button = ribbonBar1.GetType().GetField("toggleButtonShowHideComments", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this.ribbonBar1) as RadToggleButtonElement;
button.ToggleState = (radRichTextEditor1.RichTextBoxElement.ShowComments == true) ? ToggleState.On : ToggleState.Off;          
Completed
Last Updated: 23 Oct 2015 07:36 by ADMIN
Completed
Last Updated: 22 Oct 2015 10:54 by ADMIN
Completed
Last Updated: 21 Oct 2015 10:13 by ADMIN
Completed
Last Updated: 20 Oct 2015 13:13 by ADMIN
To reproduce:
-  Use the cut option in the context menu then  dispose the rich text editor and collect the garbage.

Workaround:
Telerik.WinControls.RichTextEditor.UI.ContextMenu menu = textEditor.RichTextBoxElement.ContextMenu as Telerik.WinControls.RichTextEditor.UI.ContextMenu;
textEditor.RichTextBoxElement.ContextMenu = null;

RadDropDownMenu ddm = menu.GetType().GetField("radDropDownMenu", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(menu) as RadDropDownMenu;
Completed
Last Updated: 20 Oct 2015 11:41 by ADMIN
Workaround:

public partial class Form1 : Form
{
    private Telerik.WinForms.RichTextEditor.RichTextBoxUI.Dialogs.SpellCheckingDialog spellDlg;

    public Form1()
    {
        InitializeComponent();
    }

    private void radButton1_Click(object sender, EventArgs e)
    {
        this.spellDlg = new Telerik.WinForms.RichTextEditor.RichTextBoxUI.Dialogs.SpellCheckingDialog();
        Telerik.WinForms.Documents.UI.Extensibility.SpellCheckingUIManager manager = new Telerik.WinForms.Documents.UI.Extensibility.SpellCheckingUIManager(this.radRichTextEditor1.RichTextBoxElement);

        FieldInfo fi = this.spellDlg.GetType().GetField("suggestionsListBox", BindingFlags.NonPublic | BindingFlags.Instance);
        RadListControl suggestionListBox = fi.GetValue(this.spellDlg) as RadListControl;

        suggestionListBox.DataBindingComplete -= suggestionListBox_DataBindingComplete;
        suggestionListBox.DataBindingComplete += suggestionListBox_DataBindingComplete;
        this.spellDlg.ShowDialog(manager, this.radRichTextEditor1.RichTextBoxElement);
    }

    private void suggestionListBox_DataBindingComplete(object sender, ListBindingCompleteEventArgs e)
    {
        if (((RadListControl)sender).Items.Count == 0)
        {
            FieldInfo fiBtnChange = this.spellDlg.GetType().GetField("buttonChange", BindingFlags.NonPublic | BindingFlags.Instance);
            RadButton btnChange = fiBtnChange.GetValue(this.spellDlg) as RadButton;
            btnChange.Enabled = false;

            FieldInfo fiBtnChangeAll = this.spellDlg.GetType().GetField("buttonChangeAll", BindingFlags.NonPublic | BindingFlags.Instance);
            RadButton btnChangeAll = fiBtnChangeAll.GetValue(this.spellDlg) as RadButton;
            btnChangeAll.Enabled = false;
        }
    }
}
Completed
Last Updated: 20 Oct 2015 11:36 by ADMIN
One should be able to change the document while the Find/Replace dialog is open.
Completed
Last Updated: 20 Oct 2015 08:59 by ADMIN
To reproduce:
1.Use the provided xml file in the following article: http://www.telerik.com/help/winforms/richtexteditor-localization.html and change these strings:

"Documents_ParagraphPropertiesDialog_TextAlignment_Center": "Mittig";
"Documents_ParagraphPropertiesDialog_TextAlignment_Justify": "Block";
"Documents_ParagraphPropertiesDialog_TextAlignment_Left": "Links";
"Documents_ParagraphPropertiesDialog_TextAlignment_Right": "Rechts";

2.Afterwards,  specify the RichTextBoxLocalizationProvider.CurrentProvider by loading the modified file. 
3.Run the application, select some paragraph and try to change its alignment. As a result when the ParagraphPropertiesDialog is opened, incorrect alignment text is displayed in the drop-down. If you select a new value a handled ArgumentException is thrown and the paragraph is not aligned at all.

Workaround: use a custom ParagraphPropertiesDialog:
public Form1()
{
    RichTextBoxLocalizationProvider.CurrentProvider = RichTextBoxLocalizationProvider.FromFile(@"..\..\RichTextBoxStrings - Copy.xml");
     
    InitializeComponent();

    this.radRichTextEditor1.RichTextBoxElement.ParagraphPropertiesDialog = new CustomDialog();
}


public partial class CustomDialog : ParagraphPropertiesDialog
{
    public CustomDialog()
    {
        InitializeComponent();
       
        FieldInfo fi = typeof(ParagraphPropertiesDialog).GetField("radButtonOK", 
            BindingFlags.Instance | BindingFlags.NonPublic);
        RadButton btn = fi.GetValue(this) as RadButton;
     
        btn.MouseDown += btn_MouseDown;
    }
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e); 
        if (selectedItem != null)
        {
            ButtonAlignement.Text = selectedItem.Text;
        }
    }

    public RadDropDownButton ButtonAlignement
    {
        get
        { 
            FieldInfo fi = typeof(ParagraphPropertiesDialog).GetField("radDropDownButtonAlignement",
                BindingFlags.Instance | BindingFlags.NonPublic);
            RadDropDownButton radDropDownButtonAlignement = fi.GetValue(this) as RadDropDownButton;
            return radDropDownButtonAlignement;
        }
    }

    RadMenuItem selectedItem = null;
    RadDropDownButton radDropDownButtonAlignement = null;

    private void btn_MouseDown(object sender, MouseEventArgs e)
    {
        foreach (RadMenuItem item in ButtonAlignement.Items)
        {
            if (item.Text == ButtonAlignement.Text)
            {
                selectedItem = item;
                break;
            }
        }
        if (selectedItem != null)
        {
            ButtonAlignement.Text = selectedItem.Tag.ToString();
        }
    }
}
Completed
Last Updated: 19 Oct 2015 14:21 by ADMIN
Currently, the scrollbars width is calculated only according to  SystemInformation.VerticalScrollBarWidth.

Workaround:
class MyRTE : RadRichTextEditor
{
    protected override void CreateChildItems(RadElement parent)
    {
        var rte = new MyRTEElement();
        typeof(RadRichTextEditor).GetField("richTextBox", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(this, rte);
        parent.Children.Add(rte);

    }
}
public class MyRTEElement : RadRichTextBox
{
    protected override SizeF ArrangeOverride(SizeF finalSize)
    {
        base.ArrangeOverride(finalSize);


        System.Drawing.RectangleF finalRect = new System.Drawing.RectangleF(System.Drawing.PointF.Empty, finalSize);
        System.Drawing.RectangleF clientRect = finalRect;

        System.Drawing.RectangleF horizontalScrollRect = System.Drawing.RectangleF.Empty;
        System.Drawing.RectangleF verticalScrollRect = System.Drawing.RectangleF.Empty;
        System.Drawing.RectangleF presenterArea = clientRect;

        if (this.VerticalScrollBar.Visibility != Telerik.WinControls.ElementVisibility.Collapsed)
        {
            verticalScrollRect = new System.Drawing.RectangleF(
                new System.Drawing.PointF(finalRect.Right - this.VerticalScrollBar.Size.Width, finalRect.Top),
                new System.Drawing.SizeF(this.VerticalScrollBar.Size.Width, finalRect.Height));
        }

        if (this.HorizontalScrollBar.Visibility != Telerik.WinControls.ElementVisibility.Collapsed)
        {
            horizontalScrollRect = new System.Drawing.RectangleF(
                new System.Drawing.PointF(finalRect.Left, finalRect.Bottom - this.HorizontalScrollBar.Size.Height),
                new System.Drawing.SizeF(finalRect.Width, this.HorizontalScrollBar.Size.Height));
            if (this.VerticalScrollBar.Visibility != Telerik.WinControls.ElementVisibility.Collapsed)
            {
                horizontalScrollRect.Width -= this.VerticalScrollBar.Size.Width;
                verticalScrollRect.Height -= this.HorizontalScrollBar.Size.Height;
            }
        }

        presenterArea.Width -= verticalScrollRect.Width;
        presenterArea.Height -= horizontalScrollRect.Height;

        if (this.RightToLeft)
        {
            horizontalScrollRect = Telerik.WinControls.Layouts.LayoutUtils.RTLTranslateNonRelative(horizontalScrollRect, clientRect);
            verticalScrollRect = Telerik.WinControls.Layouts.LayoutUtils.RTLTranslateNonRelative(verticalScrollRect, clientRect);
            presenterArea = Telerik.WinControls.Layouts.LayoutUtils.RTLTranslateNonRelative(presenterArea, clientRect);
        }

        this.VerticalScrollBar.Arrange(verticalScrollRect);
        this.HorizontalScrollBar.Arrange(horizontalScrollRect);
        var contentPresenter = typeof(RadRichTextBox).GetField("contentPresenter", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(this) as ContentControl;
        contentPresenter.Arrange(presenterArea);

        return finalSize;
    }
    protected override SizeF MeasureOverride(SizeF availableSize)
    {
        base.MeasureOverride(availableSize);

        System.Drawing.SizeF horizontalScrollSize = System.Drawing.SizeF.Empty;
        System.Drawing.SizeF verticalScrollSize = System.Drawing.SizeF.Empty;
        System.Drawing.SizeF presenterSize = availableSize;

        if (this.VerticalScrollBar.Visibility != Telerik.WinControls.ElementVisibility.Collapsed)
        {
            verticalScrollSize = new System.Drawing.SizeF(this.VerticalScrollBar.Size.Width, availableSize.Height);
        }

        if (this.HorizontalScrollBar.Visibility != Telerik.WinControls.ElementVisibility.Collapsed)
        {
            horizontalScrollSize = new System.Drawing.SizeF(availableSize.Width, this.HorizontalScrollBar.Size.Height);
        }

        presenterSize.Width -= verticalScrollSize.Width;
        presenterSize.Height -= horizontalScrollSize.Height;
        //presenterSize = base.GetClientRectangle(presenterSize).Size;

        this.VerticalScrollBar.Measure(verticalScrollSize);
        this.HorizontalScrollBar.Measure(horizontalScrollSize);

        var contentPresenter = typeof(RadRichTextBox).GetField("contentPresenter", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(this) as ContentControl;
        contentPresenter.Measure(presenterSize);

        return availableSize;
    }
    
}