Ticket #3373: contextmenu.patch
File contextmenu.patch, 2.3 KB (added by , 15 years ago) |
---|
-
plugins\contextmenu\plugin.js
old new 39 39 40 40 _ : 41 41 { 42 getMenuItems : function() 43 { 44 var items = []; 45 46 var selection = this.editor.getSelection(), 47 element = selection && selection.getStartElement(); 48 49 for ( var i = 0 ; i < this._.listeners.length ; i++ ) 50 { 51 var listenerItems = this._.listeners[ i ]( element, selection ); 52 53 if ( listenerItems ) 54 { 55 for ( var itemName in listenerItems ) 56 { 57 var item = this.editor.getMenuItem( itemName ); 58 59 if ( item ) 60 { 61 item.state = listenerItems[ itemName ]; 62 items.push( item ); 63 } 64 } 65 } 66 } 67 return items; 68 }, 69 42 70 onMenu : function( offsetParent, offsetX, offsetY ) 43 71 { 44 72 var menu = this._.menu, … … 84 112 }; 85 113 } 86 114 87 var listeners = this._.listeners,88 includedItems = [];89 90 var selection = this.editor.getSelection(),91 element = selection && selection.getStartElement();92 93 115 // Lock the selection in IE, so it can be restored when closing the 94 116 // menu. 95 117 if ( CKEDITOR.env.ie ) … … 97 119 selection.lock(); 98 120 menu.onHide = unlockFn; 99 121 } 100 101 // Call all listeners, filling the list of items to be displayed. 102 for ( var i = 0 ; i < listeners.length ; i++ ) 122 123 var items = this._.getMenuItems(); 124 125 for ( var i = 0 ; i < items.length ; i++ ) 103 126 { 104 var listenerItems = listeners[ i ]( element, selection ); 105 106 if ( listenerItems ) 107 { 108 for ( var itemName in listenerItems ) 109 { 110 var item = this.editor.getMenuItem( itemName ); 111 112 if ( item ) 113 { 114 item.state = listenerItems[ itemName ]; 115 menu.add( item ); 116 } 117 } 118 } 127 menu.add( items[i] ); 119 128 } 120 121 129 menu.show( offsetParent, editor.lang.dir == 'rtl' ? 2 : 1, offsetX, offsetY ); 122 130 } 123 131 }, … … 130 138 { 131 139 var domEvent = event.data; 132 140 141 // Don't show our context menu if there are no menu items. 142 var items = this._.getMenuItems(); 143 if ( items.length === 0 ) 144 return; 145 133 146 // Cancel the browser context menu. 134 147 domEvent.preventDefault(); 135 148