Changeset 5246


Ignore:
Timestamp:
03/18/2010 08:43:21 AM (5 years ago)
Author:
garry.yao
Message:

#5307: More robust dialog page hidding which take cares of tablist mode and single page style.

Location:
CKEditor/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r5245 r5246  
    7272                <li><a href="http://dev.fckeditor.net/ticket/4717">#4717</a> : 'Unlink' and 'Outdent' command buttons should be disabled on editor startup.</li>
    7373                <li><a href="http://dev.fckeditor.net/ticket/5119">#5119</a> : Disabled command buttons are not being properly marked when focused.</li>
     74                <li><a href="http://dev.fckeditor.net/ticket/5307">#5307</a> : Hide dialog page cause problem when there's only two remains.</li>
    7475        </ul>
    7576        <h3>
  • CKEditor/trunk/_source/plugins/dialog/plugin.js

    r5215 r5246  
    336336                                processed = 1;
    337337                        }
    338                         else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode )
     338                        else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode && me.getPageCount() > 1 )
    339339                        {
    340340                                // Alt-F10 puts focus into the current tab item in the tab bar.
     
    894894                        page.setAttribute( 'aria-labelledby', tabId );
    895895
    896                         // If only a single page exist, a different style is used in the central pane.
    897                         if ( this._.pageCount === 0 )
    898                                 this.parts.dialog.addClass( 'cke_single_page' );
    899                         else
    900                                 this.parts.dialog.removeClass( 'cke_single_page' );
    901 
    902896                        // Take records for the tabs and elements created.
    903897                        this._.tabs[ contents.id ] = [ tab, page ];
    904898                        this._.tabIdList.push( contents.id );
    905                         this._.pageCount++;
     899                        !contents.hidden && this._.pageCount++;
    906900                        this._.lastTab = tab;
     901                        this.updateStyle();
    907902
    908903                        var contentMap = this._.contents[ contents.id ] = {},
     
    962957                },
    963958
     959                // Dialog state-specific style updates.
     960                updateStyle : function()
     961                {
     962                        // If only a single page shown, a different style is used in the central pane.
     963                        this.parts.dialog[ ( this._.pageCount === 1 ? 'add' : 'remove' ) + 'Class' ]( 'cke_single_page' );
     964                },
     965
    964966                /**
    965967                 * Hides a page's tab away from the dialog.
     
    971973                {
    972974                        var tab = this._.tabs[id] && this._.tabs[id][0];
    973                         if ( !tab )
     975                        if ( !tab || this._.pageCount == 1 )
    974976                                return;
     977                        // Switch to other tab first when we're hiding the active tab.
     978                        else if ( id == this._.currentTabId )
     979                                this.selectPage( getPreviousVisibleTab.call( this ) );
     980
    975981                        tab.hide();
     982                        this._.pageCount--;
     983                        this.updateStyle();
    976984                },
    977985
     
    988996                                return;
    989997                        tab.show();
     998                        this._.pageCount++;
     999                        this.updateStyle();
    9901000                },
    9911001
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy