Fwd: Patch to support tables with oversize cells
Robin Becker <[email protected]> Sat, 14 May 2022 08:49:11 +0100
| Newsgroups | gmane.comp.python.reportlab.user |
|---|---|
| Message-ID | <[email protected]> |
On 13/05/2022 13:12, Lennart Regebro wrote: > Hi, sorry for the delay in this, I was on vacation. > > Splitting spanned cells turns out to be not easy at all. Well, the > splitting was no problem, it's dealing with the styles. > > I believe I have found an edge case in Reportlab which I'm not sure if it's > intended or not, and fixing it will require quite a major refactoring, so I > would like your opinion on this. Basically, you can color a spanned cell > only partially in current Reportlab, but supporting splitting such a cell > leads to some weirdness. > > If you set the background color only on the starting cell for a spanned > cell, then that whole cell will get that background color. But if you set a > background color on only some out of the rows, only that part of the cell > will get colored. If you then split that cell, then what parts of that > split cell are colored can change, > > Fixing this would require calculating the colors or all cells before a > split, and then, when the table is drawn, not doing any such > "recalculation". But the first question is: Is this really supported? Is > that how it is supposed to work? That you can set partial background colors > on spanned cells? > > Attaching PDF that demonstrates this. I accidentally overwrote the code > used to generate it, though. *facepalm* > > //Lennart > ......... Hi Lennart, hope you enjoyed the vacation. Looking at your output I believe you have in fact found a bug. I had little to do with the original spanned columns/rows implementation, but I know it's a source of many bugs. I don't believe the intent was ever to allow partial styling and I haven't seen this before. It seems to me that in a span range we should consider the spanned cells to be absent. That would mean only the start cell of a span would contain content and or styling. If I can work up your example I may see how to avoid the partial styling. If your example actually shows a row span being split then we're almost there. Even without the partial styling fix I would always say the the intent is that the styles should cover the cells and the partial case is a bug. If we are able to avoid putting in content for the 'absent' spanned cells we should be able to ignore their styles. -- Robin Becker