diff options
Diffstat (limited to 'sw/source/filter/ww8/WW8TableInfo.cxx')
-rw-r--r-- | sw/source/filter/ww8/WW8TableInfo.cxx | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/sw/source/filter/ww8/WW8TableInfo.cxx b/sw/source/filter/ww8/WW8TableInfo.cxx index 4bee56fa12ef..8ca7c8d71571 100644 --- a/sw/source/filter/ww8/WW8TableInfo.cxx +++ b/sw/source/filter/ww8/WW8TableInfo.cxx @@ -53,6 +53,7 @@ WW8TableNodeInfoInner::WW8TableNodeInfoInner(WW8TableNodeInfo * pParent) , mnShadowsAfter(0) , mbEndOfLine(false) , mbEndOfCell(false) +, mbFirstInTable(false) , mbVertMerge(false) , mpTableBox(NULL) , mpTable(NULL) @@ -98,7 +99,13 @@ void WW8TableNodeInfoInner::setEndOfCell(bool bEndOfCell) mbEndOfCell = bEndOfCell; } +void WW8TableNodeInfoInner::setFirstInTable(bool bFirstInTable) +{ + mbFirstInTable = bFirstInTable; +} + void WW8TableNodeInfoInner::setVertMerge(bool bVertMerge) + { mbVertMerge = bVertMerge; } @@ -153,6 +160,11 @@ bool WW8TableNodeInfoInner::isEndOfLine() const return mbEndOfLine; } +bool WW8TableNodeInfoInner::isFirstInTable() const +{ + return mbFirstInTable; +} + const SwNode * WW8TableNodeInfoInner::getNode() const { const SwNode * pResult = NULL; @@ -320,7 +332,6 @@ string WW8TableNodeInfoInner::toString() const return string(buffer); } - // WW8TableTextNodeInfo WW8TableNodeInfo::WW8TableNodeInfo(WW8TableInfo * pParent, @@ -356,16 +367,13 @@ WW8TableNodeInfo::~WW8TableNodeInfo() aIt++; } - #ifdef DEBUG sResult += dbg_out(*mpNode); #endif - sResult += "</tableNodeInfo>"; return sResult; } - void WW8TableNodeInfo::setDepth(sal_uInt32 nDepth) { mnDepth = nDepth; @@ -400,11 +408,25 @@ void WW8TableNodeInfo::setEndOfCell(bool bEndOfCell) #endif } +void WW8TableNodeInfo::setFirstInTable(bool bFirstInTable) +{ + WW8TableNodeInfoInner::Pointer_t pInner = getInnerForDepth(mnDepth); + + pInner->setFirstInTable(bFirstInTable); + +#ifdef DEBUG + ::std::clog << "<firstInTable depth=\"" << mnDepth << "\">" + << toString() << "</firstInTable>" << ::std::endl; +#endif +} + void WW8TableNodeInfo::setVertMerge(bool bVertMerge) { WW8TableNodeInfoInner::Pointer_t pInner = getInnerForDepth(mnDepth); + pInner->setVertMerge(bVertMerge); + #ifdef DEBUG ::std::clog << "<vertMerge depth=\"" << mnDepth << "\">" << toString() << "</vertMerge>" << ::std::endl; @@ -868,6 +890,16 @@ WW8TableNodeInfo::Pointer_t WW8TableInfo::insertTableNodeInfo pNodeInfo->setCell(nCell); pNodeInfo->setRow(nRow); + if (pNode->IsTxtNode()) + { + FirstInTableMap_t::const_iterator aIt = mFirstInTableMap.find(pTable); + if (aIt == mFirstInTableMap.end()) + { + mFirstInTableMap[pTable] = pNode; + pNodeInfo->setFirstInTable(true); + } + } + if (pRect) { WW8TableCellGrid::Pointer_t pCellGrid = getCellGridForTable(pTable); |