Changeset 7518


Ignore:
Timestamp:
06/27/12 18:23:51 (22 months ago)
Author:
garry.yao
Message:

Employed IE range's bookmark to defend against trimmed text nodes on saved range.

Location:
CKEditor/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r7517 r7518  
    6262                <li><a href="http://dev.ckeditor.com/ticket/8985">#8985</a> : Better handling of ENTER key events on dialogs.</li> 
    6363                <li><a href="http://dev.ckeditor.com/ticket/8925">#8925</a> : [Firefox] Unexpected page scroll on large floating block when editor is re-focused.</li> 
     64                <li><a href="http://dev.ckeditor.com/ticket/8978">#8978</a> : [IE] Saved editor text selection is lost after close menu.</li> 
    6465        </ul> 
    6566        <h3> 
  • CKEditor/trunk/_source/plugins/selection/plugin.js

    r7477 r7518  
    280280                                                // than firing the selection change event. 
    281281 
    282                                                 var savedRange, 
     282                                                var savedBookmark, 
    283283                                                        saveEnabled, 
    284284                                                        restoreEnabled = 1; 
     
    295295 
    296296                                                                // Give the priority to locked selection since it probably 
    297                                                                 // reflects the actual situation, besides locked selection 
    298                                                                 // could be interfered because of text nodes normalizing. 
    299                                                                 // (#6083, #6987) 
     297                                                                // reflects the actual situation. (#6083, #6987) 
    300298                                                                var lockedSelection = doc.getCustomData( 'cke_locked_selection' ); 
    301299                                                                if ( lockedSelection ) 
     
    306304                                                                // Then check ff we have saved a range, restore it at this 
    307305                                                                // point. 
    308                                                                 else if ( savedRange && restoreEnabled ) 
     306                                                                else if ( savedBookmark && restoreEnabled ) 
    309307                                                                { 
     308                                                                        var range = doc.getSelection().getNative().createRange(); 
     309                                                                        range.moveToBookmark( savedBookmark ); 
    310310                                                                        // Well not break because of this. 
    311                                                                         try { savedRange.select(); } catch (e) {} 
    312                                                                         savedRange = null; 
     311                                                                        try { range.select(); } catch (e) {} 
     312                                                                        savedBookmark = null; 
    313313                                                                } 
    314314                                                        }); 
     
    533533                                                                } 
    534534 
    535                                                                 savedRange = nativeSel && sel.getRanges()[ 0 ]; 
     535                                                                // Create an IE Range bookmark to defeat possible text node normalization. 
     536                                                                try { savedBookmark = nativeSel && nativeSel.createRange().getBookmark(); } 
     537                                                                catch(er){} 
    536538 
    537539                                                                checkSelectionChangeTimeout.call( editor ); 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy