Changeset 4606


Ignore:
Timestamp:
12/07/09 11:36:30 (5 years ago)
Author:
garry.yao
Message:

Fixing #4594: float panel now is off-screen sensitive.

Location:
CKEditor/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r4605 r4606  
    8787                <li><a href="http://dev.fckeditor.net/ticket/4725">#4725</a> : Fixed hitting 'enter' before html comment node produces an JavaScript error.</li> 
    8888                <li><a href="http://dev.fckeditor.net/ticket/4522">#4522</a> : Fixed unable to redo when typing after insert an image with relative url.</li> 
     89                <li><a href="http://dev.fckeditor.net/ticket/4594">#4594</a> : Fixed context menu goes off-screen when mouse is at right had side of screen.</li> 
    8990        </ul> 
    9091        <h3> 
  • CKEditor/trunk/_source/plugins/floatpanel/plugin.js

    r4526 r4606  
    132132                                                top : top + 'px', 
    133133                                                left : '-3000px', 
    134                                                 visibility : 'hidden', 
    135134                                                opacity : '0',  // FF3 is ignoring "visibility" 
    136135                                                display : '' 
     
    192191                                                        left -= element.$.offsetWidth; 
    193192 
    194                                                 element.setStyles( 
    195                                                         { 
    196                                                                 left : left + 'px', 
    197                                                                 visibility      : '', 
    198                                                                 opacity : '1'   // FF3 is ignoring "visibility" 
    199                                                         }); 
    200  
    201                                                 if ( block.autoSize ) 
     193                                                var panelLoad = CKEDITOR.tools.bind( function () 
    202194                                                { 
    203                                                         function setHeight() 
     195                                                        if ( block.autoSize ) 
    204196                                                        { 
    205197                                                                var target = element.getFirst(); 
     
    217209                                                                panel._.currentBlock.element.setStyle( 'display', 'none' ).removeStyle( 'display' ); 
    218210                                                        } 
    219  
    220                                                         if ( panel.isLoaded ) 
    221                                                                 setHeight(); 
    222211                                                        else 
    223                                                                 panel.onLoad = setHeight; 
    224                                                 } 
    225                                                 else 
    226                                                         element.getFirst().removeStyle( 'height' ); 
    227  
    228                                                 // Set the IFrame focus, so the blur event gets fired. 
     212                                                                element.getFirst().removeStyle( 'height' ); 
     213 
     214                                                        var panelElement = panel.element, 
     215                                                                panelWindow = panelElement.getWindow(), 
     216                                                                windowScroll = panelWindow.getScrollPosition(), 
     217                                                                viewportSize = panelWindow.getViewPaneSize(), 
     218                                                                panelSize = 
     219                                                                { 
     220                                                                        'height' : panelElement.$.offsetHeight, 
     221                                                                        'width' : panelElement.$.offsetWidth 
     222                                                                }; 
     223 
     224                                                        // If the menu is horizontal off, shift it toward 
     225                                                        // the opposite language direction. 
     226                                                        if ( rtl ? left < 0 : left + panelSize.width > viewportSize.width + windowScroll.x ) 
     227                                                                left += ( panelSize.width * ( rtl ? 1 : -1 ) ); 
     228 
     229                                                        // Vertical off screen is simpler. 
     230                                                        if( top + panelSize.height > viewportSize.height + windowScroll.y ) 
     231                                                                top -= panelSize.height; 
     232 
     233                                                        element.setStyles( 
     234                                                                { 
     235                                                                        top : top + 'px', 
     236                                                                        left : left + 'px', 
     237                                                                        opacity : '1' 
     238                                                                } ); 
     239 
     240                                                } , this ); 
     241 
     242                                                panel.isLoaded ? panelLoad() : panel.onLoad = panelLoad; 
     243 
     244                                                // Set the panel frame focus, so the blur event gets fired. 
    229245                                                CKEDITOR.tools.setTimeout( function() 
    230246                                                        { 
     
    240256                                                                        } 
    241257                                                                } 
    242                                                                  
     258 
    243259                                                                iframe.$.contentWindow.focus(); 
    244  
    245260                                                                // We need this get fired manually because of unfired focus() function. 
    246                                                                 if ( CKEDITOR.env.ie && !CKEDITOR.env.quirks ) 
    247                                                                         this.allowBlur( true ); 
     261                                                                this.allowBlur( true ); 
     262 
    248263                                                        }, 0, this); 
    249264                                        }, 0, this); 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy