Fixed bug #10844: htmlArea RTE: IE8 creates erroneous ranges when selection is empty
authorStanislas Rolland <typo3@sjbr.ca>
Sat, 4 Apr 2009 00:08:42 +0000 (00:08 +0000)
committerStanislas Rolland <typo3@sjbr.ca>
Sat, 4 Apr 2009 00:08:42 +0000 (00:08 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/branches/TYPO3_4-2@5277 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
typo3/sysext/rtehtmlarea/ChangeLog
typo3/sysext/rtehtmlarea/htmlarea/htmlarea-ie.js

index 51298e9..3e4bfcb 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
 
        * Fixed issue #10837: htmlARea RTE: IE8 reports unknown "complete" attribute on img nodes
        * Fixed bug #10836: htmlARea RTE: RTE leaves unwanted id attribute on inserted table in IE8
+       * Fixed bug #10844: htmlArea RTE: IE8 creates erroneous ranges when selection is empty
 
 2009-04-03  Ingo Renner  <ingo@typo3.org>
 
index 9e5315c..73739ed 100644 (file)
@@ -2,6 +2,7 @@
 
        * Fixed issue #10837: htmlARea RTE: IE8 reports unknown "complete" attribute on img nodes
        * Fixed bug #10836: htmlARea RTE: RTE leaves unwanted id attribute on inserted table in IE8
+       * Fixed bug #10844: htmlArea RTE: IE8 creates erroneous ranges when selection is empty
 
 2009-04-02  Stanislas Rolland  <typo3@sjbr.ca>
 
index e195987..50e537c 100644 (file)
@@ -53,7 +53,10 @@ HTMLArea.prototype._getSelection = function() {
  * Create a range for the current selection
  */
 HTMLArea.prototype._createRange = function(sel) {
-       if (typeof(sel) != "undefined") return sel.createRange();
+       this.focusEditor();
+       if (typeof(sel) != "undefined") {
+               return sel.createRange();
+       }
        return this._doc.selection.createRange();
 };
 
@@ -86,6 +89,7 @@ HTMLArea.prototype.selectNodeContents = function(node, endPoint) {
  * Determine whether the node intersects the range
  */
 HTMLArea.prototype.rangeIntersectsNode = function(range, node) {
+       this.focusEditor();
        var nodeRange = this._doc.body.createTextRange();
        nodeRange.moveToElementText(node);
        return (range.compareEndPoints("EndToStart", nodeRange) == -1 && range.compareEndPoints("StartToEnd", nodeRange) == 1) ||
@@ -143,6 +147,7 @@ HTMLArea.prototype.getParentElement = function(sel) {
 HTMLArea.prototype._activeElement = function(sel) {
        if(sel == null) return null;
        if(this._selectionEmpty(sel)) return null;
+       this.focusEditor();
        if(sel.type.toLowerCase() == "control") {
                return sel.createRange().item(0);
        } else {
@@ -206,7 +211,6 @@ HTMLArea.prototype.insertNodeAtSelection = function(toBeInserted) {
  * Delete the current selection, if any.
  */
 HTMLArea.prototype.insertHTML = function(html) {
-       this.focusEditor();
        var sel = this._getSelection();
        if (sel.type.toLowerCase() == "control") {
                sel.clear();