summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorHenning Brinkmann[hbrinkm] <hbrinkm@openoffice.org>2010-01-15 17:42:01 +0100
committerHenning Brinkmann[hbrinkm] <hbrinkm@openoffice.org>2010-01-15 17:42:01 +0100
commit63d9c74114c66d40d815ce48d4b88da82d56c894 (patch)
tree727d8089b56f1883723d1fa297b60df215587a4a /writerfilter
parent15ede29abb34d86f0c0987970ce7cf8e24d37b58 (diff)
writerfilter07: TableManager: ensureOpenCell when starting a new level
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/inc/resourcemodel/TableManager.hxx32
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