/*\r
-Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
\r
function getSelectedCells( selection )\r
{\r
- // Walker will try to split text nodes, which will make the current selection\r
- // invalid. So save bookmarks before doing anything.\r
- var bookmarks = selection.createBookmarks();\r
-\r
var ranges = selection.getRanges();\r
var retval = [];\r
var database = {};\r
\r
CKEDITOR.dom.element.clearAllMarkers( database );\r
\r
- // Restore selection position.\r
- selection.selectBookmarks( bookmarks );\r
-\r
return retval;\r
}\r
\r
return cell.is ? -1 : null;\r
}\r
\r
- function cellInCol( tableMap, colIndex, cell )\r
+ function cellInCol( tableMap, colIndex )\r
{\r
var oCol = [];\r
for ( var r = 0; r < tableMap.length; r++ )\r
{\r
var row = tableMap[ r ];\r
- if ( typeof cell == 'undefined' )\r
- oCol.push( row[ colIndex ] );\r
- else if ( cell.is && row[ colIndex ] == cell.$ )\r
- return r;\r
- else if ( r == cell )\r
- return new CKEDITOR.dom.element( row[ colIndex ] );\r
- }\r
+ oCol.push( row[ colIndex ] );\r
\r
- return ( typeof cell == 'undefined' )? oCol : cell.is ? -1 : null;\r
+ // Avoid adding duplicate cells.\r
+ if ( row[ colIndex ].rowSpan > 1 )\r
+ r += row[ colIndex ].rowSpan - 1;\r
+ }\r
+ return oCol;\r
}\r
\r
function mergeCells( selection, mergeDirection, isDetect )\r