sw/qa/extras/rtfexport/data/Tpl-2min3_s1.rtf | 321 ++++++++++++++++++++++++ sw/qa/extras/rtfexport/rtfexport8.cxx | 39 ++ sw/source/writerfilter/dmapper/TableManager.cxx | 24 + 3 files changed, 384 insertions(+)
New commits: commit 23e308d5e02ee45ef589d3fddf53dabaa12aadfe Author: Michael Stahl <michael.st...@collabora.com> AuthorDate: Mon Jul 21 17:34:30 2025 +0200 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Wed Jul 23 10:57:31 2025 +0200 tdf#166953 writerfilter: add column width when adding extra cell It's not so obvious how the cell widths are set... 1. The table gets USHRT_MAX as initial width 2. All the cells in the table get USHRT_MAX/nCells as initial width (this is SwFrameSizeItem in box item set) 3. Table property "Width" is set -> this scales all the box widths 4. Row property "TableColumnSeparators" is set; this is *relative* widths to a hard-coded value of TableColumnRelativeSum=10000 Evidently the result is bad if the number of separators is too low. (regression from commit 038473595ed266d15a788d8f97781cbaf066cfe7) Change-Id: Ie71889a074bff43d8f0c34ccefb4d30ed0a9f0c0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188153 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/sw/qa/extras/rtfexport/data/Tpl-2min3_s1.rtf b/sw/qa/extras/rtfexport/data/Tpl-2min3_s1.rtf new file mode 100644 index 000000000000..edc79c6d6d10 --- /dev/null +++ b/sw/qa/extras/rtfexport/data/Tpl-2min3_s1.rtf @@ -0,0 +1,321 @@ +{ tf1nsi\deff3deflang1025 +{onttbl{0romanprq2charset0 Times New Roman;}{1romanprq2charset2 Symbol;}{2swissprq2charset0 Arial;}{3romanprq2charset0 Liberation Serif{\*alt Times New Roman};}{4romanprq2charset0 Arial;}{5romanprq2 charset0 Calibri Light;}{6romanprq2charset0 Times New Roman;}{7romanprq2 charset0 Liberation Sans{\*alt Arial};}{8romanprq2charset0 Courier New;}{ 9romanprq2charset0 Tahoma;}{10romanprq2charset0 Calibri;}{11nilprq2 charset0 Times New Roman;}{12nilprq2charset0 Courier New;}{13nilprq2 charset0 DejaVu Sans;}{14nilprq2charset0 Arial;}{15nilprq2charset0 FreeSans;}{16nilprq2charset0 Tahoma;}} +{+{\stylesheet{\s0\snext0 tlchf11fs24lang1025 \ltrch\lang2057\langfe1033\hichf4\loch\ql\widctlpar\hyphpar0 aauto\sb0\sa200\ltrpar+{\s1\sbasedon0\snext0 tlchf14fs22lang1025 \ltrch\lang2057\langfe1040\hichf4\loch\qc\widctlparaautoi0\li0\lin0 i0 in0\sb0\sa200+{\s2\sbasedon1\snext0 tlchf14fs22lang1025 \ltrch\lang2057\langfe1040\hichf4\loch\ql\widctlparaautoi0\li0\lin0 i0 in0\sb240\sa240+{\s3\sbasedon2\snext0\sautoupd tlchf14fs22lang1025 \ltrch\lang2057\langfe1040\hichf4\loch\ql\widctlparaautoi0\li0\lin0 i0 in0\sb0\sa200+{\s4\sbasedon3\snext0\sautoupd tlchf14fs22lang1025 \ltrch\lang2057\langfe1040\hichf4\loch\ql\widctlparaautoi0\li0\lin0 i0 in0\sb0\sa200+{\s9\sbasedon0\snext0 tlchf11fs21lang1025i \ltrch\lang2057\langfe1033\hichf5\loch\ql\keep\widctlparaautoi0\li0\lin0 i0 in0\sb40\sa0\keepn+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\ *+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\*+{\s172\sbasedon0\snext173 tlchf15fs28 \ltrch\hichf7\loch\sb240\sa120\keepn7s28\dbchf13 Heading;} +{\s173\sbasedon0\snext173\loch\sl276\slmult1\sb0\sa140 Body Text;} +{\s174\sbasedon173\snext174 tlchf15 \ltrch\loch\sl240\slmult1\sb0\sa0 List;} +{\s175\sbasedon0\snext175 tlchf15fs24i \ltrch\loch\sb120\sa120s24\i caption;} +{\s176\sbasedon0\snext176 tlchf15 \ltrch\loch\sb0\sa0 Index;} +{\s177\snext177 tlchf11fs20lang1025 \ltrch\lang2057\langfe2057\hichf6\loch\ql\widctlpar\hyphpar0 aauto\ltrpar+{\s178\sbasedon0\snext178\loch\sb0\sa0 Header and Footer;} +{\s179\sbasedon0\snext179 tlchf11fs24lang1025 \ltrch\lang2057\langfe1033\hichf4\loch\ql\widctlpar qc x4677 qr x9355aautoi0\li0\lin0 i0 in0\sb0\sa200+{\s180\sbasedon177\snext180 tlchf11fs20lang1025 \ltrch\lang2057\langfe2057\loch\ql\widctlparaauto i0\li0\lin0 i0 in0rdrtrdrnonerdrlrdrnonerdrbrdrnonerdrrrdrnone s20\lang2057\dbch\langfe2057 Table Grid;} +{\s181\sbasedon0\snext181 tlchf11fs20lang1025 \ltrch\lang2057\langfe1033\loch\ql\widctlparaautoi0\li0\lin0 i0 in0\sb0\sa200+{\s182\snext182 tlchf11fs20lang1025 \ltrch\lang2057\langfe1033\hichf8\loch\qj owidctlpar x-720\hyphpar0aauto\ltrpar+{\s183\sbasedon0\snext183 tlchf11fs24lang1025 \ltrch\lang1033\langfe1033\loch\qj\widctlparaauto i0\li-360\lin-360 i0 in0\sb0\sa200+{\s184\sbasedon0\snext184 tlchf16fs20lang1025 \ltrch\lang2057\langfe1033\hichf9\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sb0\sa200+{\s185\sbasedon0\snext185 tlchf11fs20lang1025 \ltrch\lang1033\langfe1036\hichf4\loch\qj owidctlparaautoi0\li0\lin0 i85 in85\sb0\sa200+{\s186\sbasedon0\snext186 tlchf11fs20lang1025 \ltrch\lang1033\langfe1036\hichf4\loch\qj owidctlparaautoi0\li0\lin0 i85 in85\sb0\sa200+{\s187\sbasedon0\snext187 tlchf11fs24lang1025 \ltrch\lang2057\langfe1033\hichf4\loch\ql\widctlpar qc x4536 qr x9072aautoi0\li0\lin0 i0 in0\sb0\sa200+{\s188\sbasedon0\snext188 tlchf16fs16lang1025 \ltrch\lang2057\langfe1033\hichf9\loch\ql\widctlparaautoi0\li0\lin0 i0 in0\sb0\sa200+{\s189\sbasedon0\snext189 tlchf11fs20lang1025 \ltrch\lang2057\langfe1033\hichf4\loch\ql\widctlparaautoi0\li0\lin0 i0 in0\sb0\sa200+{\s190\sbasedon189\snext189 tlchf11fs20lang1025b \ltrch\lang2057\langfe1033\hichf4\loch\ql\widctlparaautoi0\li0\lin0 i0 in0\sb0\sa200+{\s191\sbasedon0\snext191 tlchf11fs20lang1025 \ltrch\lang2057\langfe1033\loch\qj\widctlpar x283aautoi-283\li283\lin283 i0 in0\sb0\sa240+{\s192\sbasedon0\snext192 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlparaautoi0\li0\lin0 i0 in0\sbauto1\saauto1+{\s193\sbasedon0\snext193 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\ widctlparaautoi0\li0\lin0 i0 in0\sbauto1\saauto1+{\s194\sbasedon0\snext194 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qr\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw30rdrcf1rsp0rdrlrdrsrdrw30rdrcf1rsp0rdrbrdrsrdrw10rdrcf1rsp0rdrrrdrnone+{\s195\sbasedon0\snext195 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qr\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw10rdrcf1rsp0rdrlrdrsrdrw30rdrcf1rsp0rdrbrdrsrdrw30rdrcf1rsp0rdrrrdrnone+{\s196\sbasedon0\snext196 tlchf14fs24lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1+{\s197\sbasedon0\snext197 tlchf14fs24lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1+{\s198\sbasedon0\snext198 tlchf14fs24lang1025 \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1+{\s199\sbasedon0\sn ext199 tlchf14fs24lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlparaautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrsrdrw20rdrcf1rsp0rdrbrdrnonerdrrrdrnone+{\s200\sbasedon0\snext200 tlchf14fs24lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1+{\s201\sbasedon0\snext201 tlchf14fs28lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw30rdrcf1rsp0rdrlrdrsrdrw30rdrcf1rsp0rdrbrdrsrdrw20rdrcf1rsp0rdrrrdrsrdrw20rdrcf1rsp0+{\s202\sbasedon0\snext202 tlchf14fs24lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw30rdrcf1rsp0rdrlrdrsrdrw20rdrcf1rsp0rdrbrdrsrdrw20rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s203\sbasedon0\snext203 tlchf14fs24lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\l in0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw30rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw20rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s204\sbasedon0\snext204 tlchf14fs24lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw30rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw20rdrcf1rsp0rdrrrdrnone+{\s205\sbasedon0\snext205 tlchf14fs24lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw30rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw20rdrcf1rsp0rdrrrdrsrdrw30rdrcf1rsp0+{\s206\sbasedon0\snext206 tlchf14fs28lang1025 \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrnonerdrlrdrsrdrw30rdrcf1rsp0rdrbrdrsrdrw10rdrcf1rsp0rdrrrdrsrdrw20rdrcf1rsp0+{\s207\sbasedon0\snext207 tlchf14fs18lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrsrdrw20rdrcf1rsp0rdrbrdrsrdrw10rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s208\sbasedon0\snext208 tlchf14fs18lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw10rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s209\sbasedon0\snext209 tlchf14fs18lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw10rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s210\sbasedon0\snext210 tlchf14fs18lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw10rdrcf1rsp0rdrrrdrsrdrw30rdrcf1rsp0+{\s211\sbasedon0\snext211 tlchf14fs18lang1025b \ltrc h\lang2057\langfe2057\hichf4\loch\qc\widctlparaautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw10rdrcf1rsp0rdrlrdrsrdrw20rdrcf1rsp0rdrbrdrsrdrw10rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s212\sbasedon0\snext212 tlchf14fs18lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1oxrdrsrdrw10rdrcf1rsp0+{\s213\sbasedon0\snext213 tlchf14fs18lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1oxrdrsrdrw10rdrcf1rsp0+{\s214\sbasedon0\snext214 tlchf14fs18lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw10rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw10rdrcf1rsp0rdrrrdrsrdrw30rdrcf1rsp0+{\s215\sbasedon0\snext215 tlchf14fs28lang1025 \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrnonerdrlrdrsrdrw30rdrcf1rsp0 rdrbrdrsrdrw30rdrcf1rsp0rdrrrdrsrdrw20rdrcf1rsp0+{\s216\sbasedon0\snext216 tlchf14fs18lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw10rdrcf1rsp0rdrlrdrsrdrw20rdrcf1rsp0rdrbrdrsrdrw30rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s217\sbasedon0\snext217 tlchf14fs18lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw10rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw30rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s218\sbasedon0\snext218 tlchf14fs18lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw10rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw30rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s219\sbasedon0\snext219 tlchf14fs18lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsr drw10rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw30rdrcf1rsp0rdrrrdrsrdrw30rdrcf1rsp0+{\s220\sbasedon0\snext220 tlchf14fs48lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1+{\s221\sbasedon0\snext221 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1+{\s222\sbasedon0\snext222 tlchf14fs24lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrsrdrw20rdrcf1rsp0rdrbrdrnonerdrrrdrnone+{\s223\sbasedon0\snext223 tlchf14fs24lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrnonerdrbrdrnonerdrrrdrnone+{\s224\sbasedon0\snext224 tlchf14fs24lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar aautoi0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw2 0rdrcf1rsp0rdrlrdrnonerdrbrdrnonerdrrrdrsrdrw20rdrcf1rsp0+{\s225\sbasedon0\snext225 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw30rdrcf1rsp0rdrlrdrsrdrw20rdrcf1rsp0rdrbrdrsrdrw10rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s226\sbasedon0\snext226 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw30rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw10rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s227\sbasedon0\snext227 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw30rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw10rdrcf1rsp0rdrrrdrsrdrw30rdrcf1rsp0+{\s228\sbasedon0\snext228 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\ saauto1rdrtrdrsrdrw10rdrcf1rsp0rdrlrdrsrdrw20rdrcf1rsp0rdrbrdrsrdrw30rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s229\sbasedon0\snext229 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw10rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw30rdrcf1rsp0rdrrrdrsrdrw10rdrcf1rsp0+{\s230\sbasedon0\snext230 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw10rdrcf1rsp0rdrlrdrsrdrw10rdrcf1rsp0rdrbrdrsrdrw30rdrcf1rsp0rdrrrdrsrdrw30rdrcf1rsp0+{\s231\sbasedon0\snext231 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrsrdrw20rdrcf1rsp0rdrbrdrsrdrw20rdrcf1rsp0rdrrrdrnone+{\s232\sbasedon0\snext232 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctl paracenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrnonerdrbrdrsrdrw20rdrcf1rsp0rdrrrdrnone+{\s233\sbasedon0\snext233 tlchf14fs32lang1025b \ltrch\lang2057\langfe2057\hichf4\loch\ql\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrnonerdrbrdrsrdrw20rdrcf1rsp0rdrrrdrsrdrw20rdrcf1rsp0+{\s234\sbasedon0\snext234 tlchf14fs32lang1025 \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrsrdrw20rdrcf1rsp0rdrbrdrsrdrw20rdrcf1rsp0rdrrrdrnone+{\s235\sbasedon0\snext235 tlchf14fs32lang1025 \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrnonerdrbrdrsrdrw20rdrcf1rsp0rdrrrdrnone+{\s236\sbasedon0\snext236 tlchf14fs32lang1025 \ltrch\lang2057\langfe2057\hichf4\loch\qc\widctlpar acenteri0\li0\lin0 i0 in0\sbauto1\saauto1 rdrtrdrsrdrw20rdrcf1rsp0rdrlrdrnonerdrbrdrsrdrw20rdrcf1rsp0rdrrrdrsrdrw20rdrcf1rsp0+{\s237\snext237 tlchf11fs24lang1025 \ltrch\lang2057\langfe1033\hichf4\loch\ql\widctlpar\hyphpar0 aauto\ltrpar+{\s238\snext238 tlchf11fs24lang1025 \ltrch\lang2057\langfe2057\hichf6\loch\ql\widctlpar\hyphpar0 aauto\ltrpar+{\s239\sbasedon0\snext239 tlchf11fs20lang1025 \ltrch\lang2057\langfe1033\loch\qj\widctlpar x2160aautoi0\li1440\lin1440 i0 in0\sb0\sa240+{\s240\sbasedon0\snext240 tlchf11fs23lang1025 \ltrch\lang2057\langfe2052\loch\sl-274\slmult0\qj owidctlparaautoi-380\li0\lin0 i0 in0\sb780\sa180+{\s241\sbasedon0\snext241 tlchf11fs23lang1025b \ltrch\lang2057\langfe2052\loch\sl240\slmult0\ql owidctlparaautoi0\li0\lin0 i0 in0\sb0\sa200+{\s242\sbasedon177\snext180 tlchf11fs22lang1025 \ltrch\lang1033\langfe1033\hichf10\loch\ql owidctlparaautoi0\li0\lin0 i0 in0rdrtrdrnonerdrlrdrnonerdrbrdrnonerdrrrdrnone10 s22\lang1033\dbch\langfe1033 Table Grid1;} +{\s243\sbasedon0\snext0\sautoupd tlchf11fs24lang1025 \ltrch\lang1033\langfe1033\hichf4\loch\ql\widctlpar ldot qr x8505 aautoi0\li0\lin0 i509 in509\sb60\sa60+{\s244\sbasedon0\snext0\sautoupd tlchf11fs24lang1025 \ltrch\lang2057\langfe1033\hichf4\loch\ql\widctlpar ldot qr x8505aautoi0\li140\lin140 i0 in0\sb60\sa60+{\s245\sbasedon0\snext0\sautoupd tlchf11fs24lang1025 \ltrch\lang2057\langfe1033\hichf4\loch\ql\widctlpar ldot qr x8505aautoi0\li300\lin300 i0 in0\sb60\sa60+{\s246\sbasedon0\snext0\sautoupd tlchf11fs24lang1025 \ltrch\lang2057\langfe1033\hichf4\loch\ql\widctlpar ldot qr x8505aautoi0\li600\lin600 i0 in0\sb60\sa60+{\s247\sbasedon0\snext247 tlchf11fs20lang1025 \ltrch\lang2057\langfe2057\loch\sl-240\slmult0\ql\widctlparaautoi0\li0\lin0 i0 in0\sb0\sa160\supers20\lang2057\dbch\langfe2057 1;} +{\s248\sbasedon0\snext248 tlchf14fs16lang1025 \ltrch\lang2057\langfe1033\hichf4\loch\ql\widctlparaautoi0\li0\lin0 i0 in0\sb0\sa200+{\s249\sbasedon0\snext249 tlchf14fs16lang1025 \ltrch\lang1033\langfe1033\hichf4\loch\ql\widctlparaautoi0\li0\lin0 i0 in0\sb120\sa120+{\s250\sbasedon0\snext250\loch\sb0\sa0 Frame Contents;} +{\s251\sbasedon0\snext251\loch\sb0\sa0 Frame Contents (user);} +}{\*\generator Collabora_OfficeDev/25.04.3.1$Linux_X86_64 LibreOffice_project/22365598a3ebd4eef1c367fbff5b3cdf37980a2f}{\info{+\hyphauto1 iewscale80ormshade obrkwrptbl\paperh11906\paperw16838\margl1276\margr1276\margt1300\margb1300\sectd\sbknone\sftnnar\saftnnrlc\sectunlocked1\pgwsxn16838\pghsxn11906\marglsxn1276\margrsxn1276\margtsxn1300\margbsxn1300 tnbjtnstart1tnrstconttnnaretftnrstcontftnstart1ftnnrlc +{\*tnsep+xxxxxxxx}{\loch +{\*kmkstart _Toc95073555}{\*kmkstart _Toc109213984}x{\*kmkend _Toc95073555}{\*kmkend _Toc109213984}} +\par rowd rql rleft186\ltrrow rrh276 rpaddft3 rpaddt0 rpaddfl3 rpaddl0 rpaddfb3 rpaddb0 rpaddfr3 rpaddr0+xxxxxxxxx (xxxxxxxx xx xxxx xxxx 2 xxxxx)} +\par \pard\plain \s0 tlchf11fs24lang1025 \ltrch\lang2057\langfe1033\hichf4\loch\ql\widctlpar\hyphpar0 aauto\sb0\sa200\ltrpar+xxxx xx xxxxx xx xxxxx xx xxxx xxx xxxxxxxx xx xxxxxxxxxx. xxxxxx xxxxx/xxxxxxx xx xxxxxxxxx.}+xxxxxxxx xxxx:}++xxxxxxxx}+xxxx 1}+xxxx 2}+xxxx 3}+xxxx 4}+xxxx 5}+xxxx 6}+++x 1}+x 2}+x 3}+x 4}+x 1}+x 2}+ }{ tlchfs16b \ltrch\lochs16\loch +x 3}+ }{ tlchfs16b \ltrch\lochs16\loch +x 4}+x 1}+x 2}+x 3}+x 4}+x 1}+x 2}+x 3}+x 4}+x 1}+x 2}+x 3}+x 4}+x 1}+x 2}+x 3}+x 4}++xxxx 1.1 - \u8230\'85 }++++++++++++++++++++++++++#\u167\'a7xxx-xxx-xx\u167\'a7# } +\par } \ No newline at end of file diff --git a/sw/qa/extras/rtfexport/rtfexport8.cxx b/sw/qa/extras/rtfexport/rtfexport8.cxx index 5ee88d5e842a..6d6f261f5b36 100644 --- a/sw/qa/extras/rtfexport/rtfexport8.cxx +++ b/sw/qa/extras/rtfexport/rtfexport8.cxx @@ -175,6 +175,45 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf158586_lostFrame) verify(); } +CPPUNIT_TEST_FIXTURE(Test, testTdf166953) +{ + auto verify = [this]() { + xmlDocUniquePtr pLayout = parseLayoutDump(); + assertXPath(pLayout, "/root/page[1]/body/tab/row[1]/infos/bounds", "width", u"14149"); + // the problem was that this width was 544 + assertXPath(pLayout, "/root/page[1]/body/tab/row[1]/cell[1]/infos/bounds", "width", + u"14146"); + // there is another cell in this row that was added by writerfilter + assertXPath(pLayout, "/root/page[1]/body/tab/row[2]/infos/bounds", "width", u"14149"); + // the problem was that this width was 544 + assertXPath(pLayout, "/root/page[1]/body/tab/row[2]/cell[1]/infos/bounds", "width", + u"2408"); + assertXPath(pLayout, "/root/page[1]/body/tab/row[2]/cell[2]/infos/bounds", "width", + u"11738"); + // there is another cell in this row that was added by writerfilter + assertXPath(pLayout, "/root/page[1]/body/tab/row[3]/infos/bounds", "width", u"14149"); + assertXPath(pLayout, "/root/page[1]/body/tab/row[3]/cell[1]/infos/bounds", "width", + u"3309"); + assertXPath(pLayout, "/root/page[1]/body/tab/row[3]/cell[2]/infos/bounds", "width", + u"1759"); + assertXPath(pLayout, "/root/page[1]/body/tab/row[3]/cell[3]/infos/bounds", "width", + u"1729"); + assertXPath(pLayout, "/root/page[1]/body/tab/row[3]/cell[4]/infos/bounds", "width", + u"1831"); + assertXPath(pLayout, "/root/page[1]/body/tab/row[3]/cell[5]/infos/bounds", "width", + u"1863"); + assertXPath(pLayout, "/root/page[1]/body/tab/row[3]/cell[6]/infos/bounds", "width", + u"1865"); + assertXPath(pLayout, "/root/page[1]/body/tab/row[3]/cell[7]/infos/bounds", "width", + u"1791"); + // there is another cell in this row that was already in the RTF + }; + createSwDoc("Tpl-2min3_s1.rtf"); + verify(); + saveAndReload(mpFilter); + verify(); +} + CPPUNIT_TEST_FIXTURE(Test, testEndnotesAtSectEndRTF) { // Given a document, endnotes at collected at section end: diff --git a/sw/source/writerfilter/dmapper/TableManager.cxx b/sw/source/writerfilter/dmapper/TableManager.cxx index 2baace56973b..54aa10765f59 100644 --- a/sw/source/writerfilter/dmapper/TableManager.cxx +++ b/sw/source/writerfilter/dmapper/TableManager.cxx @@ -25,6 +25,7 @@ #include "util.hxx" #include <comphelper/sequence.hxx> #include <comphelper/diagnose_ex.hxx> +#include <com/sun/star/text/TableColumnSeparator.hpp> using namespace com::sun::star; @@ -428,6 +429,29 @@ void TableManager::HandleSmallerRows() pRowData->addCell(xNewCellTextCursor, pCellPropMap); pRowData->endCell(xNewCellTextCursor); pRowData->getProperties()->setValue(TablePropertyMap::TABLE_WIDTH, nMaxRowWidth); + // tdf#166953 the TableColumnSeparators property needs another + // separator for the extra cell added to it + auto const oSep{ pRowData->getProperties()->getProperty( + PROP_TABLE_COLUMN_SEPARATORS) }; + if (oSep) + { + auto const oldSeps{ + oSep->second.get<uno::Sequence<text::TableColumnSeparator>>() + }; + ::std::remove_const_t<decltype(oldSeps)> newSeps{ oldSeps.getLength() + 1 }; + auto const it{ ::std::transform( + oldSeps.begin(), oldSeps.end(), newSeps.getArray(), [&](auto const sep) { + double const pos{ sep.Position * double(nRowWidth) / nMaxRowWidth }; + return text::TableColumnSeparator{ + static_cast<sal_Int16>(::rtl::math::round(pos)), sep.IsVisible + }; + }) }; + // TODO replace magic number + it->Position = ::rtl::math::round(10000 * double(nRowWidth) / nMaxRowWidth); + it->IsVisible = true; + pRowData->getProperties()->Insert(PROP_TABLE_COLUMN_SEPARATORS, + uno::Any(newSeps)); + } } } }