Kaydet (Commit) 3e2cda22 authored tarafından Miklos Vajna's avatar Miklos Vajna

fdo#69289 RTF import: handle cells with zero width

Change-Id: I31b12a5afa5d501d57b56f515ee1d2fd46a09b32
üst 06f7d1a9
{\rtf\ansi
{
\trowd\trgaph30\trleft-30\trrh256\clvertalb\cellx1280\clvertalb\cellx1280\clvertalb\cellx2560\pard\plain\intbl
\ql a\cell\ql b\cell\ql c\cell\row
}
}
...@@ -1518,6 +1518,16 @@ DECLARE_RTFIMPORT_TEST(testCharColor, "char-color.rtf") ...@@ -1518,6 +1518,16 @@ DECLARE_RTFIMPORT_TEST(testCharColor, "char-color.rtf")
CPPUNIT_ASSERT_EQUAL(sal_Int32(0x365F91), getProperty<sal_Int32>(getParagraph(1), "CharColor")); CPPUNIT_ASSERT_EQUAL(sal_Int32(0x365F91), getProperty<sal_Int32>(getParagraph(1), "CharColor"));
} }
DECLARE_RTFIMPORT_TEST(testFdo69289, "fdo69289.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<table::XTableRows> xTableRows(xTable->getRows(), uno::UNO_QUERY);
// There were only 2 cells (1 separators) in the table, should be 3 (2 separators).
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), "TableColumnSeparators").getLength());
}
CPPUNIT_PLUGIN_IMPLEMENT(); CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -3510,6 +3510,9 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) ...@@ -3510,6 +3510,9 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
? m_nNestedCurrentCellX ? m_nNestedCurrentCellX
: m_nTopLevelCurrentCellX); : m_nTopLevelCurrentCellX);
int nCellX = nParam - rCurrentCellX; int nCellX = nParam - rCurrentCellX;
const int COL_DFLT_WIDTH = 41; // sw/source/filter/inc/wrtswtbl.hxx, minimal possible width of cells.
if (!nCellX)
nCellX = COL_DFLT_WIDTH;
// If there is a negative left margin, then the first cellx is relative to that. // If there is a negative left margin, then the first cellx is relative to that.
RTFValue::Pointer_t pTblInd = m_aStates.top().aTableRowSprms.find(NS_ooxml::LN_CT_TblPrBase_tblInd); RTFValue::Pointer_t pTblInd = m_aStates.top().aTableRowSprms.find(NS_ooxml::LN_CT_TblPrBase_tblInd);
......
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