Author: mseidel Date: Thu Oct 11 17:03:07 2018 New Revision: 1843573 URL: http://svn.apache.org/viewvc?rev=1843573&view=rev Log: i127875 - Merge r1837212 from trunk
Fix SwCntntFrm::CalcLowers() so that it visits all on-page objects. SwCntntFrm::CalcLowers() walks the object tree walk and it assumes that the objects visited will be at a monotonically increasing distance from the top of the page, so it terminates the walk once it encounters the first object below the bottom of the page. Even though the objects are vertically sorted in each branch of the tree, there is no guarantee that the order of the objects visited in the depth-first walk will be perfectly sorted vertically, so the walk may terminate before visiting all of the objects on the page. Fix this problem by pruning branches when they cross the lower page boundary and only terminating the walk once there are no longer any paths forward. Submitted by: truckman Modified: openoffice/branches/AOO416/ (props changed) openoffice/branches/AOO416/main/ (props changed) openoffice/branches/AOO416/main/sw/ (props changed) openoffice/branches/AOO416/main/sw/source/core/inc/cntfrm.hxx openoffice/branches/AOO416/main/sw/source/core/layout/tabfrm.cxx Propchange: openoffice/branches/AOO416/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Oct 11 17:03:07 2018 @@ -2,5 +2,5 @@ /openoffice/branches/ia2:1417739-1541842 /openoffice/branches/ooxml-osba:1546391,1546395,1546574,1546934,1547030,1547392,1551920,1551954,1551958,1552283 /openoffice/branches/rejuvenate01:1480411,1534063,1534098,1536312,1549902,1560617 -/openoffice/trunk:1571617,1571619,1571677,1572577,1572587,1573547,1574058,1574101,1575922,1576216,1576748,1578786,1579934,1580657,1580779,1581746,1581840,1582359,1582365,1582709,1583336,1583418,1583589,1583988,1585171,1585261,1586242,1586249,1586583,1587468,1589050,1591501,1592692,1592716,1594206,1595847,1595851,1595858,1596218,1596491,1596494,1597076,1597102,1597109,1599169,1599173-1599174,1600581,1600587,1600590,1600630,1600861,1600863,1600883,1602434,1602791,1602823,1602850,1603416,1603897,1604709,1604786,1605044,1605355,1605689,1606055,1606061,1607111,1607793,1607836,1608348,1608359,1608376,1608730,1608733,1609204,1609208,1609302,1609426,1610347,1610411,1610422,1610671,1611549,1612539,1612801,1621121,1623847,1623849-1623850,1642300-1642302,1647713,1652476,1654282,1668939,1669457,1669459,1669462-1669463,1669465,1689883,1689959,1690740,1690755,1690854,1694131-1694132,1694701,1702894,1702898,1702986,1702988,1705542-1705543,1705551,1706649,1707397,1707659,1723875,1729921,1730154,174 8497,1754469,1755873,1756017,1758150,1760461,1761439,1761808,1763017,1763019,1765170,1766467,1766530,1766915,1772139,1780015,1784925,1784961,1785175,1791815,1793216,1797494,1800077,1800568,1802428,1803787,1803939,1804182,1805208,1806314,1811013,1811435,1811737,1813450,1814994,1815700,1825850,1837765,1839130,1839837,1840427 +/openoffice/trunk:1571617,1571619,1571677,1572577,1572587,1573547,1574058,1574101,1575922,1576216,1576748,1578786,1579934,1580657,1580779,1581746,1581840,1582359,1582365,1582709,1583336,1583418,1583589,1583988,1585171,1585261,1586242,1586249,1586583,1587468,1589050,1591501,1592692,1592716,1594206,1595847,1595851,1595858,1596218,1596491,1596494,1597076,1597102,1597109,1599169,1599173-1599174,1600581,1600587,1600590,1600630,1600861,1600863,1600883,1602434,1602791,1602823,1602850,1603416,1603897,1604709,1604786,1605044,1605355,1605689,1606055,1606061,1607111,1607793,1607836,1608348,1608359,1608376,1608730,1608733,1609204,1609208,1609302,1609426,1610347,1610411,1610422,1610671,1611549,1612539,1612801,1621121,1623847,1623849-1623850,1642300-1642302,1647713,1652476,1654282,1668939,1669457,1669459,1669462-1669463,1669465,1689883,1689959,1690740,1690755,1690854,1694131-1694132,1694701,1702894,1702898,1702986,1702988,1705542-1705543,1705551,1706649,1707397,1707659,1723875,1729921,1730154,174 8497,1754469,1755873,1756017,1758150,1760461,1761439,1761808,1763017,1763019,1765170,1766467,1766530,1766915,1772139,1780015,1784925,1784961,1785175,1791815,1793216,1797494,1800077,1800568,1802428,1803787,1803939,1804182,1805208,1806314,1811013,1811435,1811737,1813450,1814994,1815700,1825850,1837212,1837765,1839130,1839837,1840427 /openoffice/trunk/main:1705369 Propchange: openoffice/branches/AOO416/main/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Oct 11 17:03:07 2018 @@ -2,4 +2,4 @@ /openoffice/branches/ia2/main:1417739-1541842 /openoffice/branches/ooxml-osba/main:1546391,1546395,1546574,1546934,1547030,1547392,1551920,1551954,1551958,1552283 /openoffice/branches/rejuvenate01/main:1480411,1534063,1534098,1536312,1549902,1560617 -/openoffice/trunk/main:1571617,1571677,1572569,1572577,1573547,1574058,1574101,1575922,1576216,1576748,1578786,1579934,1580657,1580779,1581746,1581840,1582359,1582365,1582709,1583336,1583418,1583589,1583988,1585171,1585261,1586242,1586249,1586583,1587468,1589050,1591501,1592692,1592716,1594206,1595847,1595851,1595858,1596218,1596491,1596494,1597076,1597102,1597109,1599169,1599173-1599174,1600581,1600587,1600590,1600630,1600861,1600863,1600883,1602434,1602791,1602823,1602850,1603416,1603897,1603941,1604028,1604709,1604786,1605044,1605355,1605689,1606055,1606061,1606706,1607111,1607793,1607836,1608348,1608376,1608730,1608733,1609204,1609208,1609302,1609426,1610347,1610411,1610422,1610671,1611470,1611549,1612070-1612071,1612539,1612801,1616457,1616944,1620195,1621121,1623847,1623849-1623850,1630814,1633294,1633297,1635806,1642300-1642302,1643177,1650314,1652476,1654282,1668939,1669457,1669459,1669462-1669463,1669465,1677190,1687177,1689883,1689959,1692551,1694132,1694701,1695962,169780 7,1700078,1700126,1700135,1702107,1702894,1702898,1702986,1702988,1705193,1705196,1705199,1705276,1705364,1705368-1705369,1705542,1706649,1707167,1707169-1707170,1707175,1707397,1707408,1707412,1707642,1707645,1707659,1707844,1708477,1708483,1709212,1709377,1709403,1723875,1729921,1730154,1748497,1754469,1755873,1756017,1758150,1760461,1761439,1761808,1763017,1763019,1765170,1766467,1766915,1772139,1780015,1784925,1784961,1785175,1791815,1793216,1797494,1800077,1800568,1802428,1803787,1803939,1804182,1805208,1806314,1811737,1813450,1815700,1825850,1837765,1839130,1839837,1840427 +/openoffice/trunk/main:1571617,1571677,1572569,1572577,1573547,1574058,1574101,1575922,1576216,1576748,1578786,1579934,1580657,1580779,1581746,1581840,1582359,1582365,1582709,1583336,1583418,1583589,1583988,1585171,1585261,1586242,1586249,1586583,1587468,1589050,1591501,1592692,1592716,1594206,1595847,1595851,1595858,1596218,1596491,1596494,1597076,1597102,1597109,1599169,1599173-1599174,1600581,1600587,1600590,1600630,1600861,1600863,1600883,1602434,1602791,1602823,1602850,1603416,1603897,1603941,1604028,1604709,1604786,1605044,1605355,1605689,1606055,1606061,1606706,1607111,1607793,1607836,1608348,1608376,1608730,1608733,1609204,1609208,1609302,1609426,1610347,1610411,1610422,1610671,1611470,1611549,1612070-1612071,1612539,1612801,1616457,1616944,1620195,1621121,1623847,1623849-1623850,1630814,1633294,1633297,1635806,1642300-1642302,1643177,1650314,1652476,1654282,1668939,1669457,1669459,1669462-1669463,1669465,1677190,1687177,1689883,1689959,1692551,1694132,1694701,1695962,169780 7,1700078,1700126,1700135,1702107,1702894,1702898,1702986,1702988,1705193,1705196,1705199,1705276,1705364,1705368-1705369,1705542,1706649,1707167,1707169-1707170,1707175,1707397,1707408,1707412,1707642,1707645,1707659,1707844,1708477,1708483,1709212,1709377,1709403,1723875,1729921,1730154,1748497,1754469,1755873,1756017,1758150,1760461,1761439,1761808,1763017,1763019,1765170,1766467,1766915,1772139,1780015,1784925,1784961,1785175,1791815,1793216,1797494,1800077,1800568,1802428,1803787,1803939,1804182,1805208,1806314,1811737,1813450,1815700,1825850,1837212,1837765,1839130,1839837,1840427 Propchange: openoffice/branches/AOO416/main/sw/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Oct 11 17:03:07 2018 @@ -2,4 +2,4 @@ /openoffice/branches/ia2/main/sw:1417739-1541842 /openoffice/branches/ooxml-osba/main/sw:1546391,1546395,1546574,1546934,1547030,1547392,1551920,1551954,1551958,1552283 /openoffice/branches/rejuvenate01/main/sw:1480411,1534063,1534098,1536312,1549902,1560617 -/openoffice/trunk/main/sw:1571617,1571677,1572569,1572577,1574058,1574101,1575922,1576216,1576748,1578786,1579934,1580657,1580779,1581746,1581840,1582359,1582365,1582709,1583336,1583418,1583589,1583988,1585261,1586242,1586249,1586583,1587468,1589050,1592692,1592716,1594206,1595847,1595851,1595858,1596218,1596491,1596494,1597076,1597102,1597109,1599169,1599173-1599174,1600581,1600587,1600590,1600630,1600861,1600863,1600883,1602434,1602823,1602850,1603416,1603897,1603941,1604028,1604709,1605355,1605689,1606055,1606061,1607111,1607649,1608348,1608733,1610411,1610671,1611549,1612539,1621121,1623847,1623849-1623850,1642300-1642302,1702894,1702898,1702986,1702988,1705364,1705368,1707169 +/openoffice/trunk/main/sw:1571617,1571677,1572569,1572577,1574058,1574101,1575922,1576216,1576748,1578786,1579934,1580657,1580779,1581746,1581840,1582359,1582365,1582709,1583336,1583418,1583589,1583988,1585261,1586242,1586249,1586583,1587468,1589050,1592692,1592716,1594206,1595847,1595851,1595858,1596218,1596491,1596494,1597076,1597102,1597109,1599169,1599173-1599174,1600581,1600587,1600590,1600630,1600861,1600863,1600883,1602434,1602823,1602850,1603416,1603897,1603941,1604028,1604709,1605355,1605689,1606055,1606061,1607111,1607649,1608348,1608733,1610411,1610671,1611549,1612539,1621121,1623847,1623849-1623850,1642300-1642302,1702894,1702898,1702986,1702988,1705364,1705368,1707169,1837212 Modified: openoffice/branches/AOO416/main/sw/source/core/inc/cntfrm.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/AOO416/main/sw/source/core/inc/cntfrm.hxx?rev=1843573&r1=1843572&r2=1843573&view=diff ============================================================================== --- openoffice/branches/AOO416/main/sw/source/core/inc/cntfrm.hxx (original) +++ openoffice/branches/AOO416/main/sw/source/core/inc/cntfrm.hxx Thu Oct 11 17:03:07 2018 @@ -103,6 +103,7 @@ public: sal_Bool MoveFtnCntFwd( sal_Bool, SwFtnBossFrm* );//von MoveFwd gerufen bei Ftn-Inhalt inline SwCntntFrm* GetNextCntntFrm() const; + inline SwCntntFrm* GetNextCntntFrm( bool ) const; inline SwCntntFrm* GetPrevCntntFrm() const; static bool CalcLowers( SwLayoutFrm* pLay, const SwLayoutFrm* pDontLeave, long nBottom, bool bSkipRowSpanCells ); void RegisterToNode( SwCntntNode& ); @@ -117,6 +118,16 @@ inline SwCntntFrm* SwCntntFrm::GetNextCn return (SwCntntFrm*)ImplGetNextCntntFrm( true ); } +inline SwCntntFrm* SwCntntFrm::GetNextCntntFrm( bool bPrune ) const +{ + if ( bPrune && !GetPrev() ) + return NULL; + else if ( bPrune || !(GetNext() && GetNext()->IsCntntFrm())) + return (SwCntntFrm*)ImplGetNextCntntFrm( true ); + else + return (SwCntntFrm*)GetNext(); +} + inline SwCntntFrm* SwCntntFrm::GetPrevCntntFrm() const { if ( GetPrev() && GetPrev()->IsCntntFrm() ) Modified: openoffice/branches/AOO416/main/sw/source/core/layout/tabfrm.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/AOO416/main/sw/source/core/layout/tabfrm.cxx?rev=1843573&r1=1843572&r2=1843573&view=diff ============================================================================== --- openoffice/branches/AOO416/main/sw/source/core/layout/tabfrm.cxx (original) +++ openoffice/branches/AOO416/main/sw/source/core/layout/tabfrm.cxx Thu Oct 11 17:03:07 2018 @@ -1536,6 +1536,7 @@ bool SwCntntFrm::CalcLowers( SwLayoutFrm // LONG_MAX == nBottom means we have to calculate all bool bAll = LONG_MAX == nBottom; bool bRet = sal_False; + bool bPrune; SwCntntFrm *pCnt = pLay->ContainsCntnt(); SWRECTFN( pLay ) @@ -1612,9 +1613,8 @@ bool SwCntntFrm::CalcLowers( SwLayoutFrm pCnt->GetUpper()->Calc(); } // <-- - if( ! bAll && (*fnRect->fnYDiff)((pCnt->Frm().*fnRect->fnGetTop)(), nBottom) > 0 ) - break; - pCnt = pCnt->GetNextCntntFrm(); + bPrune = !bAll && ( (*fnRect->fnYDiff)((pCnt->Frm().*fnRect->fnGetTop)(), nBottom) > 0 ); + pCnt = pCnt->GetNextCntntFrm( bPrune ); } return bRet; }