summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenning Brinkmann <hbrinkm@openoffice.org>2011-05-13 16:47:44 +0200
committerCédric Bosdonnat <cedric.bosdonnat.ooo@free.fr>2011-05-13 16:49:39 +0200
commita6f2e395963747729c0104e17afecf32d7e119c5 (patch)
treee6252baeba306aa1050f904b0ea3412fc66eee03
parent47f7b6d36ea6059d2cc770f7e752cade18bce345 (diff)
sw34bf06: #i104384#: problem exporting section breaks in tables
Replace MSWordExportBase::bInTable by MSWordExportBase::IsInTable() Signed-off-by: Cédric Bosdonnat <cedric.bosdonnat.ooo@free.fr>
-rw-r--r--sw/source/filter/ww8/docxexport.cxx2
-rw-r--r--sw/source/filter/ww8/wrtw8nds.cxx10
-rw-r--r--sw/source/filter/ww8/wrtww8.cxx30
-rw-r--r--sw/source/filter/ww8/wrtww8.hxx5
-rw-r--r--sw/source/filter/ww8/wrtww8gr.cxx2
-rw-r--r--sw/source/filter/ww8/ww8atr.cxx2
6 files changed, 36 insertions, 15 deletions
diff --git a/sw/source/filter/ww8/docxexport.cxx b/sw/source/filter/ww8/docxexport.cxx
index 074a128826..33312dab76 100644
--- a/sw/source/filter/ww8/docxexport.cxx
+++ b/sw/source/filter/ww8/docxexport.cxx
@@ -378,7 +378,7 @@ void DocxExport::OutputEndNode( const SwEndNode& rEndNode )
if ( rNd.IsEndNode() && rNd.StartOfSectionNode()->IsSectionNode() )
return;
- if ( !rNd.IsSectionNode() && !bIsInTable ) // No sections in table
+ if ( !rNd.IsSectionNode() && IsInTable() ) // No sections in table
{
const SwSectionFmt* pParentFmt = rSect.GetFmt()->GetParent();
if( !pParentFmt )
diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx
index fff7c6391e..7808f89881 100644
--- a/sw/source/filter/ww8/wrtw8nds.cxx
+++ b/sw/source/filter/ww8/wrtw8nds.cxx
@@ -1748,7 +1748,7 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
AttrOutput().StartParagraph( pTextNodeInfo );
- bool bFlyInTable = mpParentFrame && bIsInTable;
+ bool bFlyInTable = mpParentFrame && IsInTable();
if ( !bFlyInTable )
nStyleBeforeFly = GetId( lcl_getFormatCollection( *this, &rNode ) );
@@ -2021,7 +2021,7 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
AttrOutput().ParagraphStyle( nStyle );
- if ( mpParentFrame && !bIsInTable ) // Fly-Attrs
+ if ( mpParentFrame && IsInTable() ) // Fly-Attrs
OutputFormat( mpParentFrame->GetFrmFmt(), false, false, true );
if ( pTextNodeInfo.get() != NULL )
@@ -2419,7 +2419,7 @@ void MSWordExportBase::OutputSectionNode( const SwSectionNode& rSectionNode )
SwNodeIndex aIdx( rSectionNode, 1 );
const SwNode& rNd = aIdx.GetNode();
- if ( !rNd.IsSectionNode() && !bIsInTable ) //No sections in table
+ if ( !rNd.IsSectionNode() && !IsInTable() ) //No sections in table
{
// Bug 74245 - if the first Node inside the section has an own
// PageDesc or PageBreak attribut, then dont write
@@ -2569,7 +2569,7 @@ void WW8AttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFmt, const Point
if( nStt >= nEnd ) // kein Bereich, also kein gueltiger Node
return;
- if ( !m_rWW8Export.bIsInTable && rFmt.IsInline() )
+ if ( !m_rWW8Export.IsInTable() && rFmt.IsInline() )
{
//Test to see if this textbox contains only a single graphic/ole
SwTxtNode* pParTxtNode = rAnch.GetCntntAnchor()->nNode.GetNode().GetTxtNode();
@@ -2597,7 +2597,7 @@ void WW8AttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFmt, const Point
m_rWW8Export.mpParentFrame = &rFmt;
if (
- m_rWW8Export.bIsInTable &&
+ m_rWW8Export.IsInTable() &&
(FLY_AT_PAGE != rAnch.GetAnchorId()) &&
!m_rWW8Export.pDoc->GetNodes()[ nStt ]->IsNoTxtNode()
)
diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index 6d8fe00bc4..6cd10cb3c5 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -1776,7 +1776,6 @@ void MSWordExportBase::SaveData( sal_uLong nStt, sal_uLong nEnd )
aData.eOldAnchorType = eNewAnchorType;
aData.bOldOutTable = bOutTable;
- aData.bOldIsInTable = bIsInTable;
aData.bOldFlyFrmAttrs = bOutFlyFrmAttrs;
aData.bOldStartTOX = bStartTOX;
aData.bOldInWriteTOX = bInWriteTOX;
@@ -1811,7 +1810,6 @@ void MSWordExportBase::RestoreData()
pOrigPam = rData.pOldEnd;
bOutTable = rData.bOldOutTable;
- bIsInTable = rData.bOldIsInTable;
bOutFlyFrmAttrs = rData.bOldFlyFrmAttrs;
bStartTOX = rData.bOldStartTOX;
bInWriteTOX = rData.bOldInWriteTOX;
@@ -2432,7 +2430,7 @@ void WW8Export::SectionBreaksAndFrames( const SwTxtNode& rNode )
OutputSectionBreaks( rNode.GetpSwAttrSet(), rNode );
// all textframes anchored as character for the winword 7- format
- if ( !bWrtWW8 && !bIsInTable )
+ if ( !bWrtWW8 && !IsInTable() )
OutWW6FlyFrmsInCntnt( rNode );
}
@@ -2488,7 +2486,7 @@ void MSWordExportBase::WriteText()
;
else if ( aIdx.GetNode().IsSectionNode() )
;
- else if ( !bIsInTable ) //No sections in table
+ else if ( !IsInTable() ) //No sections in table
{
ReplaceCr( (char)0xc ); // Indikator fuer Page/Section-Break
@@ -2567,6 +2565,28 @@ void WW8Export::WriteMainText()
#endif
}
+bool MSWordExportBase::IsInTable() const
+{
+ bool bResult = false;
+
+ if (pCurPam != NULL)
+ {
+ SwNode * pNode = pCurPam->GetNode();
+
+ if (pNode != NULL && mpTableInfo.get() != NULL)
+ {
+ ww8::WW8TableNodeInfo::Pointer_t pTableNodeInfo = mpTableInfo->getTableNodeInfo(pNode);
+
+ if (pTableNodeInfo.get() != NULL && pTableNodeInfo->getDepth() > 0)
+ {
+ bResult = true;
+ }
+ }
+ }
+
+ return bResult;
+}
+
typedef ww8::WW8Sttb< ww8::WW8Struct > WW8SttbAssoc;
void WW8Export::WriteFkpPlcUsw()
@@ -2873,7 +2893,7 @@ void MSWordExportBase::ExportDocument( bool bWriteAll )
bStyDef = bBreakBefore = bOutKF =
bOutFlyFrmAttrs = bOutPageDescs = bOutTable = bOutFirstPage =
- bIsInTable = bOutGrf = bInWriteEscher = bStartTOX =
+ bOutGrf = bInWriteEscher = bStartTOX =
bInWriteTOX = false;
bFtnAtTxtEnd = bEndAtTxtEnd = true;
diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx
index a6e8ae6d9a..417d0e0505 100644
--- a/sw/source/filter/ww8/wrtww8.hxx
+++ b/sw/source/filter/ww8/wrtww8.hxx
@@ -539,8 +539,6 @@ public:
sal_uInt8 bOutFirstPage : 1; // write Attrset of FirstPageDesc
sal_uInt8 bOutTable : 1; // Tabelle wird ausgegeben
// ( wird zB bei Flys in Tabelle zurueckgesetzt )
- sal_uInt8 bIsInTable : 1; // wird sind innerhalb der Ausgabe einer Tabelle
- // ( wird erst nach der Tabelle zurueckgesetzt )
sal_uInt8 bOutGrf : 1; // Grafik wird ausgegeben
sal_uInt8 bInWriteEscher : 1; // in write textboxes
sal_uInt8 bStartTOX : 1; // true: a TOX is startet
@@ -572,6 +570,9 @@ public:
/// Iterate through the nodes and call the appropriate OutputNode() on them.
void WriteText();
+ /// Return whether cuurently exported node is in table.
+ bool IsInTable() const;
+
/// Set the pCurPam appropriately and call WriteText().
///
/// Used to export paragraphs in footnotes/endnotes/etc.
diff --git a/sw/source/filter/ww8/wrtww8gr.cxx b/sw/source/filter/ww8/wrtww8gr.cxx
index 3f07ea8309..9da0accd78 100644
--- a/sw/source/filter/ww8/wrtww8gr.cxx
+++ b/sw/source/filter/ww8/wrtww8gr.cxx
@@ -497,7 +497,7 @@ void WW8Export::OutGrf(const sw::Frame &rFrame)
// Otherwise, an additional paragraph is exported for a graphic, which is
// forced to be treated as inline, because it's anchored inside another frame.
if ( !rFrame.IsInline() &&
- ( ((eAn == FLY_AT_PARA) && ( bWrtWW8 || !bIsInTable )) ||
+ ( ((eAn == FLY_AT_PARA) && ( bWrtWW8 || !IsInTable() )) ||
(eAn == FLY_AT_PAGE)) )
// <--
{
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index 9448cca6b6..901d8fb81f 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -1472,7 +1472,7 @@ void WW8AttributeOutput::CharRotate( const SvxCharRotateItem& rRotate )
if ( !rRotate.GetValue() )
return;
- if ( m_rWW8Export.bWrtWW8 && !m_rWW8Export.bIsInTable )
+ if ( m_rWW8Export.bWrtWW8 && !m_rWW8Export.IsInTable() )
{
// #i36867 In word the text in a table is rotated via the TC or NS_sprm::LN_TTextFlow
// This means you can only rotate all or none of the text adding NS_sprm::LN_CEastAsianLayout