Kaydet (Commit) 4d32ad37 authored tarafından László Németh's avatar László Németh

tdf#123434 FILEOPEN: RTF: missing content in cells

Revert "tdf#122424 RTF import: ignore table row text outside the cells"

This reverts commit dc8fa612.

Change-Id: Id68dc7ae55df013de64fb2d4955a412e4c046781
Reviewed-on: https://gerrit.libreoffice.org/68086Reviewed-by: 's avatarLászló Németh <nemeth@numbertext.org>
Tested-by: 's avatarLászló Németh <nemeth@numbertext.org>
üst 30e7c7f2
{\rtf1\adeflang1025\ansi\ansicpg1250\uc1\adeff0\deff0
\colsx708
\cellx885
\cellx10260
\pard cell1
\cell
\pard cell2
\cell
X\trowd
\cellx885
\cellx10260\row
\trowd
\cellx885
\cellx5036
\pard cell3
\cell
\pard cell4
\cell
\trowd
\cellx885
\cellx5036\row
}
...@@ -220,16 +220,6 @@ DECLARE_RTFEXPORT_TEST(testTdf66543, "tdf66543.rtf") ...@@ -220,16 +220,6 @@ DECLARE_RTFEXPORT_TEST(testTdf66543, "tdf66543.rtf")
getProperty<sal_Int32>(getParagraph(1), "ParaLineNumberStartValue")); getProperty<sal_Int32>(getParagraph(1), "ParaLineNumberStartValue"));
} }
DECLARE_RTFEXPORT_TEST(testTdf122424_textOutsideCellInATableRow, "tdf122424.rtf")
{
uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
uno::Reference<container::XIndexAccess> xTables(xTextTablesSupplier->getTextTables(),
uno::UNO_QUERY);
uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY);
uno::Reference<text::XTextRange> xCell(xTable->getCellByName("A2"), uno::UNO_QUERY_THROW);
CPPUNIT_ASSERT_EQUAL(OUString("cell3"), xCell->getString());
}
DECLARE_RTFEXPORT_TEST(testUlw, "ulw.rtf") DECLARE_RTFEXPORT_TEST(testUlw, "ulw.rtf")
{ {
// Test underlying in individual words mode. // Test underlying in individual words mode.
......
...@@ -176,16 +176,7 @@ RTFError RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword) ...@@ -176,16 +176,7 @@ RTFError RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword)
case RTF_NESTCELL: case RTF_NESTCELL:
{ {
if (nKeyword == RTF_CELL) if (nKeyword == RTF_CELL)
{
m_bAfterCellBeforeRow = true; m_bAfterCellBeforeRow = true;
if (m_nCellsInRow != -1)
m_nCellsInRow++;
}
else
{
// in the case of nested tables, disable ignoring row text outside of cell content
m_nCellsInRow = -1;
}
checkFirstRun(); checkFirstRun();
if (m_bNeedPap) if (m_bNeedPap)
...@@ -241,7 +232,6 @@ RTFError RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword) ...@@ -241,7 +232,6 @@ RTFError RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword)
case RTF_ROW: case RTF_ROW:
{ {
m_bAfterCellBeforeRow = false; m_bAfterCellBeforeRow = false;
m_nActualCellInRow = 0;
if (m_aStates.top().nTableRowWidthAfter > 0) if (m_aStates.top().nTableRowWidthAfter > 0)
{ {
// Add fake cellx / cell, RTF equivalent of // Add fake cellx / cell, RTF equivalent of
......
...@@ -301,8 +301,6 @@ RTFDocumentImpl::RTFDocumentImpl(uno::Reference<uno::XComponentContext> const& x ...@@ -301,8 +301,6 @@ RTFDocumentImpl::RTFDocumentImpl(uno::Reference<uno::XComponentContext> const& x
, m_hasRFooter(false) , m_hasRFooter(false)
, m_hasFFooter(false) , m_hasFFooter(false)
, m_bAfterCellBeforeRow(false) , m_bAfterCellBeforeRow(false)
, m_nCellsInRow(0)
, m_nActualCellInRow(0)
{ {
OSL_ASSERT(xInputStream.is()); OSL_ASSERT(xInputStream.is());
m_pInStream = utl::UcbStreamHelper::CreateStream(xInputStream, true); m_pInStream = utl::UcbStreamHelper::CreateStream(xInputStream, true);
...@@ -1481,12 +1479,6 @@ void RTFDocumentImpl::text(OUString& rString) ...@@ -1481,12 +1479,6 @@ void RTFDocumentImpl::text(OUString& rString)
RTFBuffer_t* pCurrentBuffer = m_aStates.top().pCurrentBuffer; RTFBuffer_t* pCurrentBuffer = m_aStates.top().pCurrentBuffer;
if (m_nActualCellInRow > 0)
{
m_nActualCellInRow = 0;
m_nCellsInRow = 0;
}
if (!pCurrentBuffer && m_aStates.top().eDestination != Destination::FOOTNOTE) if (!pCurrentBuffer && m_aStates.top().eDestination != Destination::FOOTNOTE)
Mapper().startCharacterGroup(); Mapper().startCharacterGroup();
else if (pCurrentBuffer) else if (pCurrentBuffer)
...@@ -1628,7 +1620,6 @@ void RTFDocumentImpl::replayBuffer(RTFBuffer_t& rBuffer, RTFSprms* const pSprms, ...@@ -1628,7 +1620,6 @@ void RTFDocumentImpl::replayBuffer(RTFBuffer_t& rBuffer, RTFSprms* const pSprms,
} }
else if (std::get<0>(aTuple) == BUFFER_CELLEND) else if (std::get<0>(aTuple) == BUFFER_CELLEND)
{ {
m_nActualCellInRow++;
assert(pSprms && pAttributes); assert(pSprms && pAttributes);
auto pValue = new RTFValue(1); auto pValue = new RTFValue(1);
pSprms->set(NS_ooxml::LN_tblCell, pValue); pSprms->set(NS_ooxml::LN_tblCell, pValue);
...@@ -1646,17 +1637,11 @@ void RTFDocumentImpl::replayBuffer(RTFBuffer_t& rBuffer, RTFSprms* const pSprms, ...@@ -1646,17 +1637,11 @@ void RTFDocumentImpl::replayBuffer(RTFBuffer_t& rBuffer, RTFSprms* const pSprms,
Mapper().text(&nValue, 1); Mapper().text(&nValue, 1);
} }
else if (std::get<0>(aTuple) == BUFFER_UTEXT) else if (std::get<0>(aTuple) == BUFFER_UTEXT)
{
// ignore text outside the cell content in table rows
// except in the case of nested tables
if (m_nActualCellInRow == 0 || m_nActualCellInRow < m_nCellsInRow
|| m_nCellsInRow == -1)
{ {
OUString const aString(std::get<1>(aTuple)->getString()); OUString const aString(std::get<1>(aTuple)->getString());
Mapper().utext(reinterpret_cast<sal_uInt8 const*>(aString.getStr()), Mapper().utext(reinterpret_cast<sal_uInt8 const*>(aString.getStr()),
aString.getLength()); aString.getLength());
} }
}
else if (std::get<0>(aTuple) == BUFFER_ENDRUN) else if (std::get<0>(aTuple) == BUFFER_ENDRUN)
Mapper().endCharacterGroup(); Mapper().endCharacterGroup();
else if (std::get<0>(aTuple) == BUFFER_PAR) else if (std::get<0>(aTuple) == BUFFER_PAR)
......
...@@ -811,10 +811,6 @@ private: ...@@ -811,10 +811,6 @@ private:
/// Are we after a \cell, but before a \row? /// Are we after a \cell, but before a \row?
bool m_bAfterCellBeforeRow; bool m_bAfterCellBeforeRow;
/// cells in row, to ignore extra text content of the row
int m_nCellsInRow;
/// actual cell in row
int m_nActualCellInRow;
}; };
} // namespace rtftok } // namespace rtftok
} // namespace writerfilter } // namespace writerfilter
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment