The following code snippet can be used to prevent this behavior: <telerik:RadEditor ID="RadEditor1" runat="server"> </telerik:RadEditor> <script type="text/javascript"> (function (Editor) { var setCursor = Editor.Selection.prototype._setCursor; if (setCursor) { Editor.Selection.prototype._setCursor = function (node, range) { return Editor.Utils.isTag(node, "img") ? this._setCursorAfterNode(node, range) : setCursor.call(this, node, range); }; } })(Telerik.Web.UI.Editor); </script>
Markup to reproduce the issue: <telerik:RadEditor ID="RadEditor1" runat="server" EditModes="Design" RenderMode="Lightweight"> <Tools> <telerik:EditorToolGroup> <telerik:EditorTool Name="Bold" /> <telerik:EditorTool Name="Italic" /> <telerik:EditorTool Name="Underline" /> </telerik:EditorToolGroup> </Tools> <Content> <p>test</p> <p>test</p> </Content> </telerik:RadEditor> Resolution: <script type="text/javascript"> (function ($UI) { $UI.SizerLightweight.prototype._calcUiHeight = function () { var that = this, view = that._view, editor = that.editor, calculator = new $UI.DimensionsCalculator(editor), toolBarContainer = view.toolBarContainer(), toolBarHeight = that._getComponentHeight(toolBarContainer), paddings = calculator.getComputedSizes(editor.get_element(), ["padding-top", "padding-bottom"]), margins = calculator.getComputedSizes(toolBarContainer, ["margin-bottom"]), borders = calculator.getComputedSizes(view.contentAreaContainer(), ["border-top-width", "border-bottom-width"]), modesHeight = that._getComponentHeight(view.modesRowContainer()), modulesHeight = that._getComponentHeight(view.modulesContainer()); return toolBarHeight + modesHeight + modulesHeight + margins + borders + paddings; } })(Telerik.Web.UI.Editor.UI); </script>
Steps to reproduce: Use the following markup and click set html button: <telerik:RadEditor ID="RadEditor1" runat="server" NewLineMode="Div"> <Content> <div><span style="font-family: 'Courier New';">test</span></div> <div><span style="font-family: 'Courier New';"> </span></div> <div><span style="font-family: 'Courier New';">test</span></div> </Content> </telerik:RadEditor> <button type="button" onclick="getSetHtml();return false;">set html</button> <script> function getSetHtml() { var editor = $find("RadEditor1"); var html = editor.get_html(true); editor.set_html(html); } </script> Actual: The white space character in the empty line is removed and the empty line is not rendered Expected: The space is not removed and the new line is rendered Workaround: <script> (function ($E) { var utils = $E.Utils; Telerik.Web.UI.Editor.TrackerBase.prototype.removeZeroWidthNodes = function () { var that = this, nodes = that.nodes, reZeroWidthChar = new RegExp("^[" + that._zeroWidthCharacter + "]+$"); var nodeValuePairs = that.nodeValuePairs = []; for (var i = 0; i < nodes.length; i++) { var node = nodes[i]; if (utils.isTextNode(node) && !that._isNodeRemoved(node)) { var nodeValue = node.nodeValue; if (reZeroWidthChar.test(nodeValue)) { nodeValuePairs.push({ node: node, value: node.nodeValue }); var parentBlockElement = utils.getBlockParent(node); var isInEmptyBlockElement = parentBlockElement && utils.isNodeEmptyRecursive(parentBlockElement); node.nodeValue = isInEmptyBlockElement ? "\u00A0" : ""; } else { that.removeFirstZeroWidthChar(node); } } } } })(Telerik.Web.UI.Editor); </script>
This causes also to cancel submit and produce an incorrect behavior. You can use RadButton as a toggle button with type Checkbox as alternative solution: <telerik:RadButton runat="server" ButtonType="ToggleButton" ToggleType="CheckBox" RenderMode="Lightweight" AutoPostBack="false"></telerik:RadButton>
RadToolTipManager cannot find custom embedded skin, when a custom skin DLL is created with the Skins assembly builder (http://skinsassemblybuilder.telerik.com/). Steps to reproduce: 1. Create a custom skin and wownload ZIP from Visual Style Builder (http://skinsassemblybuilder.telerik.com/) 2. Upload ZIP to Skins Assembly builder (http://skinsassemblybuilder.telerik.com/) 3. Create new project with Telerik template, turn off all options (like additional skins). 4. Add downloaded DLL as project reference. 5. Add to web.config: <add key="Telerik.Skin" value="My_Skin" /> <add key="Telerik.EnableEmbeddedSkins" value="true" /> <add key="Telerik.EnableEmbeddedBaseStylesheet" value="true" /> <add key="Telerik.Web.SkinsAssembly" value="My_Skin"/> 6. In Default.aspx, add <telerik:RadToolTipManager runat="server"></telerik:RadToolTipManager> Result: an Internal Server Error is thrown: Telerik.Web.UI.RadToolTipManager with ID='ctl03' was unable to find an embedded skin with the name 'My_Skin'. Please, make sure that the skin name is spelled correctly and that you have added a reference to the Telerik.Web.UI.Skins.dll assembly in your project. If you want to use a custom skin, set EnableEmbeddedSkins=false.
This behavior stops the user to be able o insert these elements without being tracked
When the Zip Skin archive is modified and uploaded to the SkinsAssemblyBuilder, the page throws a server error.