summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--filter/source/msfilter/msdffimp.cxx5
-rw-r--r--sw/qa/extras/ww8import/data/tdf125281.docbin0 -> 82432 bytes
-rw-r--r--sw/qa/extras/ww8import/ww8import.cxx17
3 files changed, 22 insertions, 0 deletions
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 8dbddea29cf1..1c31a10f7ec8 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -6610,6 +6610,11 @@ bool SvxMSDffManager::GetBLIPDirect( SvStream& rBLIPStream, Graphic& rData, tool
// size to the size of this record.
sal_uInt64 maxSize = pGrStream == &rBLIPStream ? nLength : 0;
Graphic aGraphic = rGF.ImportUnloadedGraphic(*pGrStream, maxSize);
+
+ // Size available in metafile header, set that here.
+ if (aMtfSize100.getWidth() && aMtfSize100.getHeight())
+ aGraphic.SetPrefSize(aMtfSize100);
+
if (!aGraphic.IsNone())
{
rData = aGraphic;
diff --git a/sw/qa/extras/ww8import/data/tdf125281.doc b/sw/qa/extras/ww8import/data/tdf125281.doc
new file mode 100644
index 000000000000..15146f9e3daf
--- /dev/null
+++ b/sw/qa/extras/ww8import/data/tdf125281.doc
Binary files differ
diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx
index abdc2a335227..1af645f90cb1 100644
--- a/sw/qa/extras/ww8import/ww8import.cxx
+++ b/sw/qa/extras/ww8import/ww8import.cxx
@@ -14,6 +14,7 @@
#include <com/sun/star/graphic/XGraphic.hpp>
#include <viscrs.hxx>
#include <wrtsh.hxx>
+#include <ndgrf.hxx>
#include <editeng/boxitem.hxx>
#include <editeng/lrspitem.hxx>
#include <editeng/ulspitem.hxx>
@@ -204,6 +205,22 @@ DECLARE_WW8IMPORT_TEST(testTdf121734, "tdf121734.doc")
}
}
+DECLARE_WW8IMPORT_TEST(testTdf125281, "tdf125281.doc")
+{
+ // Load a .doc file which has an embedded .emf image.
+ SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
+ SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc();
+ SwNode* pNode = pDoc->GetNodes()[6];
+ CPPUNIT_ASSERT(pNode->IsGrfNode());
+ SwGrfNode* pGrfNode = pNode->GetGrfNode();
+ const Graphic& rGraphic = pGrfNode->GetGrf();
+
+ // Without the accompanying fix in place, this test would have failed, as pref size was 0 till
+ // an actual Paint() was performed (and even then, it was wrong).
+ long nExpected = 25664;
+ CPPUNIT_ASSERT_EQUAL(nExpected, rGraphic.GetPrefSize().getWidth());
+}
+
DECLARE_WW8IMPORT_TEST(testTdf122425_1, "tdf122425_1.doc")
{
// This is for header text in case we use a hack for fixed-height headers