Ticket #5649: 5649.patch

File 5649.patch, 2.2 KB (added by brooks, 9 years ago)
  • _source/plugins/dialog/plugin.js

     
    6868                return null;
    6969        }
    7070
     71
     72        function clearOrRecoverTextInputValue( container, isRecover )
     73        {
     74                var inputs = container.$.getElementsByTagName( 'input' );
     75                for ( var i = 0, length = inputs.length; i < length ; i++ )
     76                {
     77                        var item = inputs[ i ];
     78                        if ( item.type == 'text' )
     79                        {       
     80                                if ( isRecover )
     81                                {
     82                                        item.value = item['cke_fake_value'] || '';
     83                                        item['cke_fake_value'] = null;
     84                                } else
     85                                {
     86                                        item['cke_fake_value'] = item.value;
     87                                        item.value = '';
     88                                }
     89                               
     90                        }
     91                }
     92        }
     93
    7194        /**
    7295         * This is the base class for runtime dialog objects. An instance of this
    7396         * class represents a single named dialog for a single editor instance.
     
    677700                        // First, set the dialog to an appropriate size.
    678701                        this.resize( definition.minWidth, definition.minHeight );
    679702
     703                        // Reset all inputs back to their default value.
     704                        this.reset();
     705
    680706                        // Select the first tab by default.
    681707                        this.selectPage( this.definition.contents[0].id );
    682708
    683                         // Reset all inputs back to their default value.
    684                         this.reset();
    685 
    686709                        // Set z-index.
    687710                        if ( CKEDITOR.dialog._.currentZIndex === null )
    688711                                CKEDITOR.dialog._.currentZIndex = this._.editor.config.baseFloatZIndex;
     
    953976
    954977                        var selected = this._.tabs[id];
    955978                        selected[0].addClass( 'cke_dialog_tab_selected' );
    956                         selected[1].show();
     979                       
     980                        // [IE] a unvisible input[type='text'] will enlarge it's width
     981                        // if it's value is long when it show( #5649 )
     982                        // so we clear it's value before it shows and then recover it
     983                        if ( CKEDITOR.env.ie )
     984                        {
     985                                clearOrRecoverTextInputValue( selected[1] );
     986                                selected[1].show();
     987                                setTimeout( function()
     988                                {
     989                                        clearOrRecoverTextInputValue( selected[1], true );
     990                                }, 0 );
     991                        } else
     992                        {
     993                                selected[1].show();
     994                        }       
     995                       
     996
    957997                        this._.currentTabId = id;
    958998                        this._.currentTabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, id );
    959999                },
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy