Ticket #6615: 6615_4.patch

File 6615_4.patch, 2.9 KB (added by Garry Yao, 14 years ago)
  • _source/plugins/tableresize/plugin.js

     
    161161
    162162                var leftSideCells, rightSideCells, leftShiftBoundary, rightShiftBoundary;
    163163
     164                var savedRange;
     165                function toggleDesignMode( state )
     166                {
     167                        document.getBody().$.contentEditable = !!state;
     168                }
     169
    164170                function detach()
    165171                {
    166172                        pillar = null;
     
    171177                        resizer.removeListener( 'mousedown', onMouseDown );
    172178                        resizer.removeListener( 'mousemove', onMouseMove );
    173179
     180                        needsIEHacks && toggleDesignMode( 1 );
    174181                        document.getBody().setStyle( 'cursor', 'auto' );
    175182
    176183                        // Hide the resizer (remove it on IE7 - #5890).
     
    278285                {
    279286                        cancel( evt );
    280287
     288                        if ( needsIEHacks )
     289                        {
     290                                toggleDesignMode( 1 );
     291                                savedRange = document.$.selection.createRange();
     292                                if ( savedRange.parentElement().ownerDocument != editor.document.$ )
     293                                        savedRange = null;
     294                        }
     295
    281296                        resizeStart();
    282297
    283298                        document.on( 'mouseup', onMouseUp, this );
     
    288303                        evt.removeListener();
    289304
    290305                        resizeEnd();
     306
     307                        if ( needsIEHacks && savedRange )
     308                                setTimeout( function() { savedRange.select(); }, 0 );
     309
    291310                }
    292311
    293312                function onMouseMove( evt )
     
    331350                                });
    332351
    333352                        // In IE6/7, it's not possible to have custom cursors for floating
    334                         // elements in an editable document. Show the resizer in that case,
    335                         // to give the user a visual clue.
    336                         needsIEHacks && resizer.setOpacity( 0.25 );
     353                        // elements in an editable document.
     354                        needsIEHacks && toggleDesignMode();
    337355
    338356                        resizer.on( 'mousedown', onMouseDown, this );
    339357
     
    392410                        if ( !dest || dest.equals( target ) )
    393411                                return;
    394412                }
     413                else if ( evt.name == 'keydown' )
     414                        target = target.getDocument().getSelection().getStartElement();
    395415
    396                 target.getAscendant( 'table', 1 ).removeCustomData( '_cke_table_pillars' );
    397                 evt.removeListener();
     416                var table = target.getAscendant( 'table', 1 );
     417                table && table.removeCustomData( '_cke_table_pillars' );
     418
     419                if ( evt.name != 'keydown' )
     420                        evt.removeListener();
    398421        }
    399422
    400423        CKEDITOR.plugins.add( 'tableresize',
     
    434457                                                        table.setCustomData( '_cke_table_pillars', ( pillars = buildTableColumnPillars( table ) ) );
    435458                                                        table.on( 'mouseout', clearPillarsCache );
    436459                                                        table.on( 'mousedown', clearPillarsCache );
     460                                                        editor.document.removeListener( 'keydown', clearPillarsCache );
     461                                                        editor.document.on( 'keydown', clearPillarsCache );
    437462                                                }
    438463
    439464                                                var pillar = getPillarAtPosition( pillars, evt.$.clientX );
    440                                                 if ( pillar )
     465
     466                                                // Skip mouse drag/drop/selection.
     467                                                if ( pillar && !evt.$.button )
    441468                                                {
    442469                                                        !resizer && ( resizer = new columnResizer( editor ) );
    443470                                                        resizer.attachTo( pillar );
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy