diff --git a/sw/qa/extras/layout/data/min-wtf.rtf b/sw/qa/extras/layout/data/min-wtf.rtf new file mode 100644 index 000000000000..1a38c504c369 --- /dev/null +++ b/sw/qa/extras/layout/data/min-wtf.rtf @@ -0,0 +1,42 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch31506\stshfhich31506\stshfbi31506\deflang2057\deflangfe1028\themelang3079\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Arial};} +{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial{\*\falt Arial};} +{\fdbminor\f31505\fbidi \fnil\fcharset136\fprq2{\*\panose 02010601000101010101}PMingLiU{\*\falt Arial Unicode MS};} +{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} +} +{\*\defchp \f31506\fs22\lang3079\langfe1033\langnp3079\langfenp1033 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 +\f1\fs23\lang3079\langfe1033\cgrid\langnp3079\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \sunhideused \spriority1 Default Paragraph Font;}{ +\s15\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f1\fs23\lang3079\langfe1033\cgrid\langnp3079\langfenp1033 +\sbasedon0 \snext15 \slink17 \sunhideused header;}{\*\cs17 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 \slink15 \slocked Header Char;}} +\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1134\gutter0\ltrsect +\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0 +\showxmlerrors1\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1 +\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct +\asianbrkrule\rsidroot6514785\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0 +{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0 +\ltrpar \sectd \ltrsect\pgnrestart\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\headerl \ltrpar \pard\plain \ltrpar\s15\ql \li0\ri0\widctlpar +\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f1\fs23\lang3079\langfe1033\cgrid\langnp3079\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 +\par }}{\headerr \ltrpar \pard\plain \ltrpar\s15\qc \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 +\f1\fs23\lang3079\langfe1033\cgrid\langnp3079\langfenp1033 {\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \v\fs16 \line \line \line +\par \line \line \line \line \line \line \line +\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f1\fs23\lang3079\langfe1033\cgrid\langnp3079\langfenp1033 {\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 +\v\fs16 \line \line \line \line \line }{\rtlch\fcs1 \ab\af0\afs12 \ltrch\fcs0 \v\fs16 \line }{\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \v\fs16 \line +\par \line +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \v\f1\fs16 +\par }\pard \ltrpar\qr \li1418\ri0\sa1600\sl480\slmult1\widctlpar\wrapdefault\faauto\adjustright\rin0\lin1418\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\fs16\lang2057\langfe1033\langnp2057 a\line n\line v\tab \line d +}{\rtlch\fcs1 \af1 \ltrch\fcs0 \v\f1\fs16\lang2057\langfe1033\langnp2057 +\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\keepn\widctlpar\tx2835\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\fs16\lang2057\langfe1033\langnp2057 a +\tab c\line x\tab y +\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\fs16\lang2057\langfe1033\langnp2057 +\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \v\f1\fs16\lang2057\langfe1033\langnp2057 +\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af0\afs12 \ltrch\fcs0 \v\fs16\lang2057\langfe1033\langnp2057 +\par }\pard\plain \ltrpar\s15\qc \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f1\fs23\lang3079\langfe1033\cgrid\langnp3079\langfenp1033 { +\rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \v\fs16\lang2057\langfe1033\langnp2057 +\par }\pard\plain \ltrpar\qc \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f1\fs23\lang3079\langfe1033\cgrid\langnp3079\langfenp1033 {\rtlch\fcs1 \af0 +\ltrch\fcs0 [text] }{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang2057\langfe1033\langnp2057 +\par }} +\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 +\rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f1\fs23\lang3079\langfe1033\cgrid\langnp3079\langfenp1033 {\rtlch\fcs1 \af0\afs28 \ltrch\fcs0 \b\fs28\lang1031\langfe1033\loch\af0\hich\af0\dbch\af31505\langnp1031 +\hich\af0\dbch\af31505\loch\f0 Xxxxxxxxxxxxxxxx xxx xxxx}{\rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \fs24\lang2057\langfe1028\loch\af0\hich\af0\dbch\af31505\langnp2057\langfenp1028 +\par } +} diff --git a/sw/qa/extras/layout/layout3.cxx b/sw/qa/extras/layout/layout3.cxx index 9ad3c18412fd..a53ed0ada4ee 100644 --- a/sw/qa/extras/layout/layout3.cxx +++ b/sw/qa/extras/layout/layout3.cxx @@ -496,6 +496,50 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf162725) assertXPath(pXmlDoc, "/root/page/body/txt[1]/SwParaPortion/SwLineLayout[1]/SwGluePortion"); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testHiddenParagraphMarkPerLineProperties) +{ + createSwDoc("min-wtf.rtf"); + + // ensure paragraphs are merged by hidden formatting + SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell(); + SwViewOption aViewOptions(*pWrtShell->GetViewOptions()); + aViewOptions.SetViewMetaChars(false); + pWrtShell->ApplyViewOptions(aViewOptions); + + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + + assertXPath(pXmlDoc, "/root/page[1]/header/txt", 3); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[1]/SwParaPortion/SwLineLayout[1]", "height", + u"184"); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[1]/SwParaPortion/SwLineLayout[2]", "height", + u"184"); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[1]/SwParaPortion/SwLineLayout[3]", "height", + u"184"); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[1]/SwParaPortion/SwLineLayout[4]", "height", + u"184"); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[1]/SwParaPortion/SwLineLayout[5]", "height", + u"184"); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[1]/SwParaPortion/SwLineLayout", 5); + // the problem was that this was 1656 due to using wrong line spacing for last line + assertXPath(pXmlDoc, "/root/page[1]/header/txt[1]/infos/bounds", "height", u"1499"); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[1]/SwParaPortion/SwLineLayout[4]/SwFixPortion", + "type", u"PortionType::TabLeft"); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[1]/SwParaPortion/SwLineLayout[4]/SwFixPortion", + "width", u"532"); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[1]/SwParaPortion/SwLineLayout[5]/SwFixPortion", + "type", u"PortionType::TabLeft"); + // the problem was that this was 626 (same tab position as previous line) + assertXPath(pXmlDoc, "/root/page[1]/header/txt[1]/SwParaPortion/SwLineLayout[5]/SwFixPortion", + "width", u"2755"); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[2]/SwParaPortion/SwLineLayout", 0); + // this one was also wrong (1968) due to wrong spacing-below + assertXPath(pXmlDoc, "/root/page[1]/header/txt[2]/infos/bounds", "height", u"411"); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[3]/SwParaPortion/SwLineLayout[1]", "height", + u"265"); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[3]/SwParaPortion/SwLineLayout", 1); + assertXPath(pXmlDoc, "/root/page[1]/header/txt[3]/infos/bounds", "height", u"492"); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testTdf161810) { createSwDoc("tdf161810.fodt");