Opened 8 years ago

Last modified 7 years ago

#8177 confirmed Bug

Splitting cell vertically, causing incorrect rowspan.

Reported by: Krzysztof Studnik Owned by:
Priority: Normal Milestone:
Component: Core : Tables Version: 3.1
Keywords: Cc:

Description

Environment

Related to #6111

TC

  • Open editor and insert table:
    <table border="1" cellpadding="1" cellspacing="1" style="width: 500px;">
    	<tbody>
    		<tr>
    			<td colspan="2" dir="rtl">
    				<strong>1</strong></td>
    			<td colspan="2">
    				<strong>2</strong></td>
    		</tr>
    		<tr>
    			<td>
    				<strong>3</strong></td>
    			<td>
    				podział poziomy ltr</td>
    			<td dir="rtl">
    				<strong><u>4</u></strong></td>
    			<td dir="rtl">
    				podział poziomy rtl</td>
    		</tr>
    		<tr>
    			<td colspan="2" dir="rtl" rowspan="3">
    				<strong>5</strong></td>
    			<td colspan="2">
    				<strong>6</strong></td>
    		</tr>
    		<tr>
    			<td colspan="2">
    				podział pionowy ltr</td>
    		</tr>
    	</tbody>
    </table>
    <p>
    	&nbsp;</p>
    
  • Switch to wysiwyg, and set cursor in cell with no. 1
  • from context menu select Cell - split vertically.

Actual result

<table border="1" cellpadding="1" cellspacing="1" style="width: 500px;">
	<tbody>
		<tr>
			<td colspan="2" dir="rtl">
				<strong>1</strong></td>
			<td colspan="2" rowspan="3">
				<strong>2</strong></td>
		</tr>
		<tr>
			<td colspan="2" dir="rtl">
				podział pionowy rtl</td>
		</tr>
		<tr>
			<td>
				<strong>3</strong></td>
			<td>
				podział poziomy ltr</td>
			<td dir="rtl">
				<strong><u>4</u></strong></td>
			<td dir="rtl">
				podział poziomy rtl</td>
		</tr>
		<tr>
			<td colspan="2" dir="rtl" rowspan="3">
				<strong>5</strong></td>
			<td colspan="2">
				<strong>6</strong></td>
		</tr>
		<tr>
			<td colspan="2">
				podział pionowy ltr</td>
		</tr>
	</tbody>
</table>
<p>
	&nbsp;</p>

Change History (5)

comment:1 Changed 8 years ago by Krzysztof Studnik

Summary: Splitting cell vertically, causing incorrect colspan.Splitting cell vertically, causing incorrect rowspan.

comment:2 Changed 8 years ago by Jakub Ś

Status: newconfirmed
Version: 3.23.1

Cell number two gets rowspan="3". If you change it to rowspan="2" everything gets back to normal.

For a minute there I thought that perhaps cell 5 with rowspan="3" is causing this but cell number 2 gets rowspan=3 even if you remove rowspan from cell number 5.

I've been able to reproduce it from CKEditor 3.1

comment:3 Changed 7 years ago by Jakub Ś

Issue has been reproducible from CKEditor 3.1

Related tickets are: #8666, #6111

comment:4 Changed 7 years ago by Jakub Ś

The same broken table structure is produced it TC presented in #2568 and #9020. Perhaps all of those bugs use the same invalid code and they can be fixed with one patch.

Version 0, edited 7 years ago by Jakub Ś (next)

comment:5 Changed 7 years ago by Jakub Ś

#9037 was marked as duplicate.

Proposed fix presented in that ticket:

This bug is in "verticalSplitCell" function. When figuring out where to insert the new cell by checking the virtual row, the index is wrong. My fix:

var currentIndex = 0;
// Figure out where to insert the new cell by checking the vitual row.
			for ( var c = 0; c < newCellRow.length; c++ )
			{
				candidateCell = newCellRow[ c ];
				// Catch first cell actually following the column.
				if ( candidateCell.parentNode == newCellTr.$
					&& currentIndex > colIndex )
				{
					var candidateCKCell =  new CKEDITOR.dom.element( candidateCell ) ;
					newCell.insertBefore(candidateCKCell);
					
					break;
				}
				else{
					if (candidateCell.colSpan>1){
						currentIndex  = currentIndex + candidateCell.colSpan;
					}else{
						currentIndex  = currentIndex + 1;
					}
					
					candidateCell = null;
				}
					
				
			}
Note: See TracTickets for help on using tickets.
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy