Ticket #4826: 4826.patch

File 4826.patch, 1.4 KB (added by Garry Yao, 10 years ago)
  • _source/plugins/contextmenu/plugin.js

     
    183183                                {
    184184                                        var domEvent = event.data;
    185185
    186                                         if ( nativeContextMenuOnCtrl
    187                                                  && ( domEvent.$.ctrlKey || domEvent.$.metaKey ) )
     186                                        if ( nativeContextMenuOnCtrl &&
     187                                             // Safari on Windows always show 'ctrlKey' as true in 'contextmenu' event,
     188                                                // which make this property unreliable. (#4826)   
     189                                             ( safariOnWin ? holdCtrlKey : domEvent.$.ctrlKey || domEvent.$.metaKey ) )
    188190                                                return;
    189191
    190192                                        // Cancel the browser context menu.
     
    201203                                                0, this );
    202204                                },
    203205                                this );
    204                 },
     206
     207                        var safariOnWin = CKEDITOR.env.webkit && !CKEDITOR.env.mac;
     208                        if( nativeContextMenuOnCtrl && safariOnWin )
     209                        {
     210                                var holdCtrlKey,
     211                                        onKeyDown = function( event )
     212                                        {
     213                                                holdCtrlKey = event.data.$.ctrlKey || event.data.$.metaKey;
     214                                        },
     215                                        resetOnKeyUp = function()
     216                                        {
     217                                                holdCtrlKey = 0;
     218                                        };
    205219
     220                                element.on( 'keydown', onKeyDown );
     221                                element.on( 'keyup', resetOnKeyUp );
     222                                element.on( 'contextmenu', resetOnKeyUp );
     223                        }
     224                },
     225
    206226                addListener : function( listenerFn )
    207227                {
    208228                        this._.listeners.push( listenerFn );
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy