diff options
author | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-07-12 10:05:52 +0200 |
---|---|---|
committer | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-07-12 10:41:21 +0200 |
commit | c2e708d61746a259888c0e5fb1d3e9a43e3ca696 (patch) | |
tree | 1a38b6e9683fa6663144d1920ad8452306ec12aa | |
parent | a7706f8a4e79fd36a296e988f7f852dfd549a16f (diff) |
fdo#80333: .doc has large black rectangles between paragraphs
These black rectangles are character shadows, because checking
whether there is a border at all was missing. In Word there
is no shadow without a border.
Change-Id: Ib3cb4e904fdd33f215c81d7c02762a196f484b1b
-rw-r--r-- | sw/qa/extras/ww8import/data/fdo80333.doc | bin | 0 -> 24064 bytes | |||
-rw-r--r-- | sw/qa/extras/ww8import/ww8import.cxx | 9 | ||||
-rw-r--r-- | sw/source/filter/ww8/ww8par6.cxx | 24 |
3 files changed, 23 insertions, 10 deletions
diff --git a/sw/qa/extras/ww8import/data/fdo80333.doc b/sw/qa/extras/ww8import/data/fdo80333.doc Binary files differnew file mode 100644 index 000000000000..773a922bad08 --- /dev/null +++ b/sw/qa/extras/ww8import/data/fdo80333.doc diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx index 15d10d2ce25a..58a3bc19a141 100644 --- a/sw/qa/extras/ww8import/ww8import.cxx +++ b/sw/qa/extras/ww8import/ww8import.cxx @@ -16,6 +16,7 @@ #include <com/sun/star/text/XDependentTextField.hpp> #include <com/sun/star/text/XTextFramesSupplier.hpp> #include <com/sun/star/text/XTextTablesSupplier.hpp> +#include <com/sun/star/table/ShadowFormat.hpp> #include <vcl/svapp.hxx> @@ -460,6 +461,14 @@ DECLARE_WW8IMPORT_TEST(testFdo77844, "fdo77844.doc") #endif } +DECLARE_WW8IMPORT_TEST(testFdp80333, "fdo80333.doc") +{ + // Despite there is no character border, border shadow was imported + uno::Reference<beans::XPropertySet> xRun(getRun(getParagraph(1),1), uno::UNO_QUERY); + const table::ShadowFormat aShadow = getProperty<table::ShadowFormat>(xRun, "CharShadowFormat"); + CPPUNIT_ASSERT_EQUAL(table::ShadowLocation_NONE, aShadow.Location); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/filter/ww8/ww8par6.cxx b/sw/source/filter/ww8/ww8par6.cxx index a73df0340a5e..08e216ff8e5a 100644 --- a/sw/source/filter/ww8/ww8par6.cxx +++ b/sw/source/filter/ww8/ww8par6.cxx @@ -4775,16 +4775,20 @@ void SwWW8ImplReader::Read_CharBorder(sal_uInt16 nId, const sal_uInt8* pData, sh _SetWW8_BRC(nBrcVer, aBrc, pData); - Set1Border(aBoxItem, aBrc, BOX_LINE_TOP, 0, 0, true); - Set1Border(aBoxItem, aBrc, BOX_LINE_BOTTOM, 0, 0, true); - Set1Border(aBoxItem, aBrc, BOX_LINE_LEFT, 0, 0, true); - Set1Border(aBoxItem, aBrc, BOX_LINE_RIGHT, 0, 0, true); - NewAttr( aBoxItem ); - - short aSizeArray[WW8_RIGHT+1]={0}; aSizeArray[WW8_RIGHT] = 1; - SvxShadowItem aShadowItem(RES_CHRATR_SHADOW); - if( SetShadow( aShadowItem, &aSizeArray[0], aBrc ) ) - NewAttr( aShadowItem ); + // Border style is none -> no border, no shadow + if( editeng::ConvertBorderStyleFromWord(aBrc.brcType()) != table::BorderLineStyle::NONE ) + { + Set1Border(aBoxItem, aBrc, BOX_LINE_TOP, 0, 0, true); + Set1Border(aBoxItem, aBrc, BOX_LINE_BOTTOM, 0, 0, true); + Set1Border(aBoxItem, aBrc, BOX_LINE_LEFT, 0, 0, true); + Set1Border(aBoxItem, aBrc, BOX_LINE_RIGHT, 0, 0, true); + NewAttr( aBoxItem ); + + short aSizeArray[WW8_RIGHT+1]={0}; aSizeArray[WW8_RIGHT] = 1; + SvxShadowItem aShadowItem(RES_CHRATR_SHADOW); + if( SetShadow( aShadowItem, &aSizeArray[0], aBrc ) ) + NewAttr( aShadowItem ); + } } } |