diff options
author | Henning Brinkmann[hbrinkm] <hbrinkm@openoffice.org> | 2010-01-15 17:42:01 +0100 |
---|---|---|
committer | Henning Brinkmann[hbrinkm] <hbrinkm@openoffice.org> | 2010-01-15 17:42:01 +0100 |
commit | 63d9c74114c66d40d815ce48d4b88da82d56c894 (patch) | |
tree | 727d8089b56f1883723d1fa297b60df215587a4a /writerfilter | |
parent | 15ede29abb34d86f0c0987970ce7cf8e24d37b58 (diff) |
writerfilter07: TableManager: ensureOpenCell when starting a new level
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/inc/resourcemodel/TableManager.hxx | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/writerfilter/inc/resourcemodel/TableManager.hxx b/writerfilter/inc/resourcemodel/TableManager.hxx index 246058779efa..ce4d307c7011 100644 --- a/writerfilter/inc/resourcemodel/TableManager.hxx +++ b/writerfilter/inc/resourcemodel/TableManager.hxx @@ -334,6 +334,11 @@ private: */ void closeCell(const T & handle); + /** + Ensure a cell is open at the current level. + */ + void ensureOpenCell(); + protected: /** @@ -472,6 +477,7 @@ public: */ virtual bool isIgnore() const; + #ifdef DEBUG_TABLE void setTagLogger(TagLogger::Pointer_t _tagLogger) { @@ -615,6 +621,7 @@ void TableManager<T, PropertiesPointer>::endParagraphGroup() sal_Int32 nTableDepthDifference = mnTableDepthNew - mnTableDepth; while (nTableDepthDifference > 0) { + ensureOpenCell(); startLevel(); --nTableDepthDifference; @@ -642,8 +649,7 @@ void TableManager<T, PropertiesPointer>::endParagraphGroup() else if (isInCell()) { - if (! pTableData->isCellOpen()) - openCell(getHandle(), getCellProps()); + ensureOpenCell(); if (isCellEnd()) { @@ -915,6 +921,28 @@ void TableManager<T, PropertiesPointer>::closeCell pTableData->endCell(handle); } } + +template <typename T, typename PropertiesPointer> +void TableManager<T, PropertiesPointer>::ensureOpenCell() +{ +#ifdef DEBUG_TABLE + mpTableLogger->startElement("tablemanager.ensureOpenCell"); +#endif + + if (mnTableDepth > 0) + { + typename TableData<T, PropertiesPointer>::Pointer_t + pTableData = mTableDataStack.top(); + + if (!pTableData->isCellOpen()) + openCell(getHandle(), getCellProps()); + } + +#ifdef DEBUG_TABLE + mpTableLogger->endElement("tablemanager.ensureOpenCell"); +#endif +} + } #endif // INCLUDED_TABLE_MANAGER_HXX |