Ticket #6082: 6082.patch

File 6082.patch, 4.6 KB (added by Frederico Caldeira Knabben, 9 years ago)
  • _source/core/config.js

     
    330330        baseFloatZIndex : 10000
    331331};
    332332
     333/**
     334 * Indicates that some of the editor features, like alignement and text
     335 * direction, should used the "computed value" of the feature to indicate it's
     336 * on/off state, instead of using the "real value".
     337 *
     338 * If enabled, in a left to right written document, the "Left Justify"
     339 * alignment button will show as active, even if the aligment style is not
     340 * explicitly applied to the current paragraph in the editor.
     341 * @name CKEDITOR.config.useComputedState
     342 * @type Boolean
     343 * @default true
     344 * @example
     345 * config.useComputedState = false;
     346 */
     347
    333348// PACKAGER_RENAME( CKEDITOR.config )
  • _source/plugins/bidi/plugin.js

     
    1717
    1818        function getState( editor, path, dir )
    1919        {
    20                 var selection = editor.getSelection(),
    21                         ranges = selection.getRanges();
     20                var useComputedState = editor.config.useComputedState,
     21                        selectedElement;
    2222
    23                 var selectedElement = ranges && ranges[ 0 ].getEnclosedNode();
     23                useComputedState = useComputedState === undefined || useComputedState;
    2424
    25                 // If this is not our element of interest, apply to fully selected elements from guardElements.
    26                 if ( !selectedElement || selectedElement
    27                                 && !( selectedElement.type == CKEDITOR.NODE_ELEMENT && selectedElement.getName() in directSelectionGuardElements )
    28                         )
    29                         selectedElement = getFullySelected( selection, guardElements );
     25                if ( useComputedState )
     26                {
     27                        var selection = editor.getSelection(),
     28                                ranges = selection.getRanges();
    3029
     30                        selectedElement = ranges && ranges[ 0 ].getEnclosedNode();
     31
     32                        // If this is not our element of interest, apply to fully selected elements from guardElements.
     33                        if ( !selectedElement || selectedElement
     34                                        && !( selectedElement.type == CKEDITOR.NODE_ELEMENT && selectedElement.getName() in directSelectionGuardElements )
     35                                )
     36                                selectedElement = getFullySelected( selection, guardElements );
     37                }
     38
    3139                selectedElement = selectedElement || path.block || path.blockLimit;
    3240
    3341                if ( !selectedElement || selectedElement.getName() == 'body' )
    3442                        return CKEDITOR.TRISTATE_OFF;
    3543
    36                 return ( selectedElement.getComputedStyle( 'direction' ) == dir ) ?
     44                selectedElement = useComputedState ?
     45                        selectedElement.getComputedStyle( 'direction' ) :
     46                        selectedElement.getAttribute( 'dir' );
     47
     48                return ( selectedElement == dir ) ?
    3749                        CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF;
    3850        }
    3951
  • _source/plugins/justify/plugin.js

     
    1313
    1414        function getState( editor, path )
    1515        {
    16                 var firstBlock = path.block || path.blockLimit;
     16                var firstBlock = path.block || path.blockLimit,
     17                        useComputedState = editor.config.useComputedState,
     18                        currentAlign;
    1719
     20                useComputedState = useComputedState === undefined || useComputedState;
     21
    1822                if ( !firstBlock || firstBlock.getName() == 'body' )
    1923                        return CKEDITOR.TRISTATE_OFF;
    2024
    21                 var currentAlign = firstBlock.getComputedStyle( 'text-align' ).replace( alignRemoveRegex, '' );
    22                 if ( ( !currentAlign && isDefaultAlign( this, firstBlock ) ) || currentAlign == this.value )
     25                currentAlign = useComputedState ?
     26                        firstBlock.getComputedStyle( 'text-align' ).replace( alignRemoveRegex, '' ) :
     27                        firstBlock.getStyle( 'text-align' );
     28
     29                if ( ( !currentAlign && isDefaultAlign( this, firstBlock, editor ) ) || currentAlign == this.value )
    2330                        return CKEDITOR.TRISTATE_ON;
    2431                return CKEDITOR.TRISTATE_OFF;
    2532        }
     
    3138                command.fire( 'state' );
    3239        }
    3340
    34         function isDefaultAlign( command, element )
     41        function isDefaultAlign( command, element, editor )
    3542        {
     43                var useComputedState = editor.config.useComputedState;
     44
     45                if ( useComputedState !== undefined && !useComputedState )
     46                        return 0;
     47
    3648                var direction = element.getComputedStyle( 'direction' ),
    3749                        val = command.value;
    3850                return ( direction == 'rtl' && val == 'right' ) || ( direction == 'ltr' && val == 'left' );
     
    92104                                {
    93105                                        block.removeAttribute( 'align' );
    94106
    95                                         var isDefault = isDefaultAlign( this, block );
     107                                        var isDefault = isDefaultAlign( this, block.getParent(), editor );
    96108
    97109                                        if ( cssClassName )
    98110                                        {
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy