Kaydet (Commit) f5f51cb9 authored tarafından Justin Luth's avatar Justin Luth Kaydeden (comit) Miklos Vajna

tdf#89377 ww8import: table honors ParaStyle break-before-page

MS Word can page-break inside a table at any row
(using paragraph styles from the first column).
Thus a table can be split across many pages.
Writer can't because it ignores all page-breaks while inside a table,
although the entire table itself can specify starting on a new page.

This imported .doc patch checks to see if the very first paragraph style
in a table is set with a page-break, and if so, then transfers
that setting to the table itself. That at least mimics the most
common layout scenario.

Change-Id: Ifcf720e357fdf433c225234aae8e3838f1416422
Reviewed-on: https://gerrit.libreoffice.org/30127Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarJustin Luth <justin_luth@sil.org>
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst 87296258
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#*************************************************************************
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
#*************************************************************************
$(eval $(call gb_CppunitTest_CppunitTest,sw_ww8export2))
$(eval $(call gb_CppunitTest_add_exception_objects,sw_ww8export2, \
sw/qa/extras/ww8export/ww8export2 \
))
$(eval $(call gb_CppunitTest_use_libraries,sw_ww8export2, \
comphelper \
cppu \
cppuhelper \
$(if $(filter WNT-TRUE,$(OS)-$(DISABLE_ATL)),,emboleobj) \
sal \
test \
unotest \
utl \
sw \
tl \
$(gb_UWINAPI) \
))
$(eval $(call gb_CppunitTest_use_externals,sw_ww8export2,\
boost_headers \
libxml2 \
))
$(eval $(call gb_CppunitTest_set_include,sw_ww8export2,\
-I$(SRCDIR)/sw/inc \
-I$(SRCDIR)/sw/source/core/inc \
-I$(SRCDIR)/sw/qa/extras/inc \
$$(INCLUDE) \
))
$(eval $(call gb_CppunitTest_use_sdk_api,sw_ww8export2))
$(eval $(call gb_CppunitTest_use_ure,sw_ww8export2))
$(eval $(call gb_CppunitTest_use_vcl,sw_ww8export2))
$(eval $(call gb_CppunitTest_use_components,sw_ww8export2,\
basic/util/sb \
comphelper/util/comphelp \
configmgr/source/configmgr \
dbaccess/util/dba \
filter/source/config/cache/filterconfig1 \
filter/source/storagefilterdetect/storagefd \
forms/util/frm \
framework/util/fwk \
i18npool/util/i18npool \
linguistic/source/lng \
package/source/xstor/xstor \
package/util/package2 \
sax/source/expatwrap/expwrap \
sw/util/msword \
sw/util/sw \
sw/util/swd \
sfx2/util/sfx \
svl/source/fsstor/fsstorage \
svtools/util/svt \
toolkit/util/tk \
ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \
unotools/util/utl \
unoxml/source/service/unoxml \
unoxml/source/rdf/unordf \
uui/util/uui \
$(if $(filter DESKTOP,$(BUILD_TYPE)),xmlhelp/util/ucpchelp1) \
xmloff/util/xo \
))
$(eval $(call gb_CppunitTest_use_configuration,sw_ww8export2))
# vim: set noet sw=4 ts=4:
...@@ -65,6 +65,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\ ...@@ -65,6 +65,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_ooxmlw14export \ CppunitTest_sw_ooxmlw14export \
CppunitTest_sw_ooxmlimport \ CppunitTest_sw_ooxmlimport \
CppunitTest_sw_ww8export \ CppunitTest_sw_ww8export \
CppunitTest_sw_ww8export2 \
CppunitTest_sw_ww8import \ CppunitTest_sw_ww8import \
CppunitTest_sw_rtfexport \ CppunitTest_sw_rtfexport \
CppunitTest_sw_rtfimport \ CppunitTest_sw_rtfimport \
......
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include <swmodeltestbase.hxx>
#include <com/sun/star/graphic/XGraphic.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/text/XTextFramesSupplier.hpp>
#include <com/sun/star/text/XTextTablesSupplier.hpp>
#include <pagedesc.hxx>
class Test : public SwModelTestBase
{
public:
Test() : SwModelTestBase("/sw/qa/extras/ww8export/data/", "MS Word 97") {}
bool mustTestImportOf(const char* filename) const override
{
// If the testcase is stored in some other format, it's pointless to test.
return OString(filename).endsWith(".doc");
}
};
DECLARE_WW8EXPORT_TEST(testTdf89377, "tdf89377_tableWithBreakBeforeParaStyle.doc")
{
// the paragraph style should set table's text-flow break-before-page
CPPUNIT_ASSERT_EQUAL( 2, getPages() );
}
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -3446,6 +3446,13 @@ bool SwWW8ImplReader::StartTable(WW8_CP nStartCp, SvxULSpaceItem* pULSpaceItem) ...@@ -3446,6 +3446,13 @@ bool SwWW8ImplReader::StartTable(WW8_CP nStartCp, SvxULSpaceItem* pULSpaceItem)
} }
} }
} }
// if first paragraph in table has break-before-page, transfer that setting to the table itself.
else if( StyleExists(m_nAktColl) )
{
const SwFormat* pStyleFormat = m_vColl[m_nAktColl].m_pFormat;
if( pStyleFormat && pStyleFormat->GetBreak().GetBreak() == SvxBreak::PageBefore )
NewAttr( pStyleFormat->GetBreak() );
}
m_pTableDesc = new WW8TabDesc( this, nStartCp ); m_pTableDesc = new WW8TabDesc( this, nStartCp );
......
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