Ticket #3901 (closed Bug: wontfix)

Opened 5 years ago

Last modified 22 months ago

Find scrollIntoView incorrect

Reported by: dshafik Owned by:
Priority: Normal Milestone:
Component: General Version: FCKeditor 2.6.4
Keywords: Cc:

Description

An issue similar to #3692 for CKEditor 3.0, also exists in FCKEditor 2.6.x.

When doing a Find, it will not scroll to the first item found, but the items thereafter are fine.

When doing a Replace, it will not scroll to the first or second item found.

I tested this using the demo on the FCK website.

To replicate the find issue:

1) put some text at the top of the editor 2) hit enter enough times to scroll off the page 3) Search for the text at the top

To replicate the replace issue: 1) Put some text at the top of the editor 2) Hit enter enough times to scroll off the page 3) enter the SAME text 4) Hit enter again enough times to scroll off the page 5) enter the SAME text a third time 6) then do a replace of that text.

Looking into it, it seems that the first iteration, inside _Find, you don't have a FindRange, so you do this:

if ( !FindRange )
                FindRange = new CharacterRange( new CharacterCursor( EditorDocument ), searchString.length ) ;}

Then, in CharacterRange.Highlight the line:

HighlightStyle.ApplyToRange( domRange, false, true ) ;

Seems to unset the domRange.StartNode (becomes undefined). This means that this throws an exception:

var charRange = CharacterRange.CreateFromDomRange( domRange ) ;

However, even if you capture the StartNode and put it back in place doing something like this:

Highlight : function()
{
        if ( this._cursors.length < 1 )
                return ;

        var domRange = this.ToDomRange() ;
        
        // First time through, the StartNode is lost
        this._highlightRange = domRange ;
        t = domRange.StartNode;
        
        HighlightStyle.ApplyToRange( domRange, false, true ) ;

        if (!domRange.StartNode) {
                domRange.StartNode = t;
        }
        
        var charRange = CharacterRange.CreateFromDomRange( domRange ) ;
        var focusNode = domRange.StartNode ;

        if ( focusNode.nodeType != 1 )
                focusNode = focusNode.parentNode ;
        
        FCKDomTools.ScrollIntoView( focusNode, false ) ;
        this._cursors = charRange._cursors ;
}

While it stops the exception, it still doesn't scroll.

  • Davey

Change History

comment:1 Changed 22 months ago by j.swiderski

  • Status changed from new to closed
  • Resolution set to wontfix

FCKeditor was retired and is no longer supported. All active development was moved to its successor, CKEditor 3.x, that is a fully mature and far superior product. We recommend you upgrade as soon as possible since this issue is no longer a problem in current code base.

Note: See TracTickets for help on using tickets.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy