Changeset 7453


Ignore:
Timestamp:
04/05/12 16:00:45 (2 years ago)
Author:
garry.yao
Message:

#7366: Fix clipboard to support for pasting from browser menu toolbar and context menu.

Location:
CKEditor/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r7452 r7453  
    4242                <li><a href="http://dev.ckeditor.com/ticket/7430">#7430</a> : Justify commands now perform alignment on the element when an image is selected.</li> 
    4343                <li><a href="http://dev.ckeditor.com/ticket/8706">#8706</a> : Better ARIA accessibility for the color picker dialog window.</li> 
     44                <li><a href="http://dev.ckeditor.com/ticket/7366">#7366</a> : Editor paste function is now available on browser toolbar and context menu.</li> 
    4445        </ul> 
    4546        <p> 
  • CKEditor/trunk/_source/plugins/clipboard/plugin.js

    r7447 r7453  
    136136                                var body = this.document.getBody(); 
    137137 
    138                                 // Simulate 'beforepaste' event for all none-IEs. 
    139                                 if ( !CKEDITOR.env.ie && body.fire( 'beforepaste' ) ) 
    140                                         event.cancel(); 
    141138                                // Simulate 'paste' event for Opera/Firefox2. 
    142                                 else if ( CKEDITOR.env.opera 
     139                                if ( CKEDITOR.env.opera 
    143140                                                 || CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) 
    144141                                        body.fire( 'paste' ); 
     
    379376                                { 
    380377                                        var body = editor.document.getBody(); 
    381                                         body.on( CKEDITOR.env.webkit ? 'paste' : 'beforepaste', function( evt ) 
     378 
     379                                        // Intercept the paste before it actually takes place. 
     380                                        body.on( !CKEDITOR.env.ie ? 'paste' : 'beforepaste', function( evt ) 
    382381                                                { 
    383382                                                        if ( depressBeforeEvent ) 
     383                                                                return; 
     384 
     385                                                        // Dismiss the (wrong) 'beforepaste' event fired on toolbar menu open. 
     386                                                        var domEvent = evt.data && evt.data.$; 
     387                                                        if ( CKEDITOR.env.ie && domEvent && !domEvent.ctrlKey ) 
    384388                                                                return; 
    385389 
     
    402406                                                }); 
    403407 
    404                                         // Dismiss the (wrong) 'beforepaste' event fired on context menu open. (#7953) 
    405                                         body.on( 'contextmenu', function() 
    406                                         { 
    407                                                 depressBeforeEvent = 1; 
    408                                                 setTimeout( function() { depressBeforeEvent = 0; }, 10 ); 
    409                                         }); 
     408                                        if ( CKEDITOR.env.ie ) 
     409                                        { 
     410                                                // Dismiss the (wrong) 'beforepaste' event fired on context menu open. (#7953) 
     411                                                body.on( 'contextmenu', function() 
     412                                                { 
     413                                                        depressBeforeEvent = 1; 
     414                                                        // Important: The following timeout will be called only after menu closed. 
     415                                                        setTimeout( function() { depressBeforeEvent = 0; }, 0 ); 
     416                                                } ); 
     417 
     418                                                // Handle IE's late coming "paste" event when pasting from 
     419                                                // browser toolbar/context menu. 
     420                                                body.on( 'paste', function( evt ) 
     421                                                { 
     422                                                        if ( !editor.document.getById( 'cke_pastebin' ) ) 
     423                                                        { 
     424                                                                // Prevent native paste. 
     425                                                                evt.data.preventDefault(); 
     426 
     427                                                                depressBeforeEvent = 0; 
     428                                                                // Resort to the paste command. 
     429                                                                pasteCmd.exec( editor ); 
     430                                                        } 
     431                                                } ); 
     432                                        } 
    410433 
    411434                                        body.on( 'beforecut', function() { !depressBeforeEvent && fixCut( editor ); } ); 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy