@@ -667,32 +667,38 @@ public LayoutResult layout(LayoutContext layoutContext) {
667
667
if (1 == minRowspan ) {
668
668
// Here we use the same cell, but create a new renderer which doesn't have any children,
669
669
// therefore it won't have any content.
670
- Cell overflowCell = currentRow [col ].getModelElement ().clone (true ); // we will change properties
671
- CellRenderer originalCellRenderer = currentRow [col ];
670
+ CellRenderer overflowCell = (CellRenderer ) currentRow [col ].getModelElement ().clone (true ).getRenderer (); // we will change properties
671
+ overflowCell .setParent (this );
672
+ overflowCell .deleteProperty (Property .HEIGHT );
673
+ overflowCell .deleteProperty (Property .MIN_HEIGHT );
674
+ overflowCell .deleteProperty (Property .MAX_HEIGHT );
675
+ overflowRows .setCell (0 , col , null );
676
+ overflowRows .setCell (targetOverflowRowIndex [col ] - row , col , overflowCell );
672
677
currentRow [col ].isLastRendererForModelElement = false ;
673
678
childRenderers .add (currentRow [col ]);
679
+ CellRenderer originalCell = currentRow [col ];
674
680
currentRow [col ] = null ;
675
- rows .get (targetOverflowRowIndex [col ])[col ] = originalCellRenderer ;
676
- overflowRows .setCell (0 , col , null );
677
- overflowRows .setCell (targetOverflowRowIndex [col ] - row , col , (CellRenderer ) overflowCell .getRenderer ().setParent (this ));
678
- overflowRows .getCell (targetOverflowRowIndex [col ] - row , col ).deleteProperty (Property .HEIGHT );
679
- overflowRows .getCell (targetOverflowRowIndex [col ] - row , col ).deleteProperty (Property .MIN_HEIGHT );
680
- overflowRows .getCell (targetOverflowRowIndex [col ] - row , col ).deleteProperty (Property .MAX_HEIGHT );
681
+ rows .get (targetOverflowRowIndex [col ])[col ] = originalCell ;
681
682
} else {
682
683
childRenderers .add (currentRow [col ]);
683
684
// shift all cells in the column up
684
685
int i = row ;
685
686
for (; i < row + minRowspan && i + 1 < rows .size () && splitResult [1 ].rows .get (i + 1 - row )[col ] != null ; i ++) {
686
687
overflowRows .setCell (i - row , col , splitResult [1 ].rows .get (i + 1 - row )[col ]);
687
688
overflowRows .setCell (i + 1 - row , col , null );
689
+ rows .get (i )[col ] = rows .get (i + 1 )[col ];
690
+ rows .get (i + 1 )[col ] = null ;
688
691
}
689
692
// the number of cells behind is less then minRowspan-1
690
693
// so we should process the last cell in the column as in the case 1 == minRowspan
691
694
if (i != row + minRowspan - 1 && null != rows .get (i )[col ]) {
692
- Cell overflowCell = rows .get (i )[col ].getModelElement ();
693
- overflowRows . getCell ( i - row , col ) .isLastRendererForModelElement = false ;
695
+ CellRenderer overflowCell = ( CellRenderer ) rows .get (i )[col ].getModelElement (). getRenderer (). setParent ( this );
696
+ rows . get ( i )[ col ] .isLastRendererForModelElement = false ;
694
697
overflowRows .setCell (i - row , col , null );
695
- overflowRows .setCell (targetOverflowRowIndex [col ] - row , col , (CellRenderer ) overflowCell .getRenderer ().setParent (this ));
698
+ overflowRows .setCell (targetOverflowRowIndex [col ] - row , col , overflowCell );
699
+ CellRenderer originalCell = rows .get (i )[col ];
700
+ rows .get (i )[col ] = null ;
701
+ rows .get (targetOverflowRowIndex [col ])[col ] = originalCell ;
696
702
}
697
703
}
698
704
overflowRows .getCell (targetOverflowRowIndex [col ] - row , col ).occupiedArea = cellOccupiedArea ;
0 commit comments