Changeset 7518


Ignore:
Timestamp:
06/27/2012 06:23:51 PM (3 years 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