Ticket #11: OperaContextMenu.patch
File OperaContextMenu.patch, 3.1 KB (added by , 17 years ago) |
---|
-
_test/manual/fckcontextmenu/test1.htm
152 152 </tr> 153 153 </table> 154 154 </div> 155 <p> 156 <input type="checkbox" onclick="oContextMenu.CtrlDisable = this.checked" /> [CTRL] + [Right Click] always shows the default menu. 157 </p> 155 158 </body> 156 159 </html> -
editor/_source/classes/fckcontextmenu.js
48 48 if ( !FCKBrowserInfo.IsIE ) 49 49 { 50 50 this._Document = mouseClickWindow.document ; 51 if ( FCKBrowserInfo.IsOpera && !( 'oncontextmenu' in document.createElement('foo') ) ) 52 { 53 this._Document.addEventListener( 'mousedown', FCKContextMenu_Document_OnMouseDown, false ) ; 54 this._Document.addEventListener( 'mouseup', FCKContextMenu_Document_OnMouseUp, false ) ; 55 } 51 56 this._Document.addEventListener( 'contextmenu', FCKContextMenu_Document_OnContextMenu, false ) ; 52 57 } 53 58 } … … 77 82 FCKTools.AddEventListenerEx( element, 'contextmenu', FCKContextMenu_AttachedElement_OnContextMenu, this ) ; 78 83 else 79 84 element._FCKContextMenu = this ; 80 81 // element.onmouseup = FCKContextMenu_AttachedElement_OnMouseUp ;82 85 } 83 86 84 87 function FCKContextMenu_Document_OnContextMenu( e ) … … 101 104 return true ; 102 105 } 103 106 104 function FCKContextMenu_AttachedElement_OnContextMenu( ev, fckContextMenu, el ) 107 var FCKContextMenu_OverrideButton ; 108 109 function FCKContextMenu_Document_OnMouseDown( e ) 105 110 { 106 // var iButton = e ? e.which - 1 : event.button ; 111 if( !e || e.button != 2 ) 112 return ; 107 113 108 // if ( iButton != 2 ) 109 // return ; 114 var el = e.target ; 110 115 116 while ( el ) 117 { 118 if ( el._FCKContextMenu ) 119 { 120 if ( el._FCKContextMenu.CtrlDisable && ( e.ctrlKey || e.metaKey ) ) 121 return true ; 122 123 var overrideButton = FCKContextMenu_OverrideButton ; 124 if( !overrideButton ) 125 { 126 var doc = e.target.ownerDocument ; 127 overrideButton = FCKContextMenu_OverrideButton = doc.createElement('input') ; 128 overrideButton.type = 'button' ; 129 (doc.body||doc.documentElement).appendChild( overrideButton ) ; 130 } 131 132 overrideButton.style.cssText = 'position:absolute;top:' + ( e.clientY - 2 ) + 133 'px;left:' + ( e.clientX - 2 ) + 134 'px;width:5px;height:5px;opacity:0.01' ; 135 } 136 el = el.parentNode ; 137 } 138 } 139 140 function FCKContextMenu_Document_OnMouseUp( e ) 141 { 142 var overrideButton = FCKContextMenu_OverrideButton ; 143 144 if ( overrideButton ) 145 { 146 overrideButton.parentNode.removeChild( overrideButton ) ; 147 FCKContextMenu_OverrideButton = undefined ; 148 149 if( e && e.button == 2 ) 150 { 151 FCKContextMenu_Document_OnContextMenu( e ) ; 152 return false ; 153 } 154 } 155 } 156 157 function FCKContextMenu_AttachedElement_OnContextMenu( ev, fckContextMenu, el ) 158 { 111 159 if ( fckContextMenu.CtrlDisable && ( ev.ctrlKey || ev.metaKey ) ) 112 160 return true ; 113 161