Ticket #3373: 3373_3.patch
File 3373_3.patch, 2.4 KB (added by , 15 years ago) |
---|
-
_source/plugins/contextmenu/plugin.js
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, … … 79 107 }; 80 108 } 81 109 82 var listeners = this._.listeners,83 includedItems = [];84 85 var selection = this.editor.getSelection(),86 element = selection && selection.getStartElement();87 88 110 // Lock the selection in IE, so it can be restored when closing the 89 111 // menu. 90 112 if ( CKEDITOR.env.ie ) 91 113 { 92 selection.lock();114 editor.getSelection().lock() 93 115 menu.onHide = function() 94 116 { 95 117 editor.getSelection().unlock(); 96 118 }; 97 119 } 98 120 99 // Call all listeners, filling the list of items to be displayed. 100 for ( var i = 0 ; i < listeners.length ; i++ ) 121 var items = this._.getMenuItems(); 122 123 for ( var i = 0 ; i < items.length ; i++ ) 101 124 { 102 var listenerItems = listeners[ i ]( element, selection ); 103 104 if ( listenerItems ) 105 { 106 for ( var itemName in listenerItems ) 107 { 108 var item = this.editor.getMenuItem( itemName ); 109 110 if ( item ) 111 { 112 item.state = listenerItems[ itemName ]; 113 menu.add( item ); 114 } 115 } 116 } 125 menu.add( items[i] ); 117 126 } 118 127 119 128 menu.show( offsetParent, editor.lang.dir == 'rtl' ? 2 : 1, offsetX, offsetY ); … … 128 137 { 129 138 var domEvent = event.data; 130 139 140 // Don't show our context menu if there are no menu items. 141 var items = this._.getMenuItems(); 142 if ( items.length === 0 ) 143 return; 144 131 145 // Cancel the browser context menu. 132 146 domEvent.preventDefault(); 133 147