summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2014-06-12 20:37:47 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-06-14 11:10:50 +0000
commite9f78d3e9b6d961cefbe47e5a4b4ff7c9e6a2b73 (patch)
treea6f955532c4db5667f78b2e0b5cec99c1b96f62d /writerfilter
parent6a4e688c84a12ced4113ea28f9d8837d2d616690 (diff)
fdo#76633: writerfilter RTF import: disappear the rectangle shapes on images
If the shape properties are inside \picprop destination, don't set shapeType. (regression from 9f1f7199736e2ae07b34849ba66f61a1ef5782e8) Actually this does not fix the root cause, this is just a work-around, the extra shape is still inserted but it's invisible now. Change-Id: I6cf093de2a5657533f393863ed8010ae083bec16 (cherry picked from commit b7857e5cfe9d5d007785ae93e5505620fc8ed475) Reviewed-on: https://gerrit.libreoffice.org/9773 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx12
-rw-r--r--writerfilter/source/rtftok/rtfsdrimport.cxx6
-rw-r--r--writerfilter/source/rtftok/rtfsdrimport.hxx3
3 files changed, 15 insertions, 6 deletions
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 67285b09b3da..dd14ca53b312 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -1391,7 +1391,8 @@ void RTFDocumentImpl::replayBuffer(RTFBuffer_t& rBuffer,
else if (boost::get<0>(aTuple) == BUFFER_PAR)
parBreak();
else if (boost::get<0>(aTuple) == BUFFER_STARTSHAPE)
- m_pSdrImport->resolve(boost::get<1>(aTuple)->getShape(), false);
+ m_pSdrImport->resolve(boost::get<1>(aTuple)->getShape(), false,
+ RTFSdrImport::SHAPE);
else if (boost::get<0>(aTuple) == BUFFER_ENDSHAPE)
m_pSdrImport->close();
else
@@ -1660,7 +1661,8 @@ int RTFDocumentImpl::dispatchDestination(RTFKeyword nKeyword)
if (nKeyword == RTF_SHPTXT)
{
if (!m_aStates.top().pCurrentBuffer)
- m_pSdrImport->resolve(m_aStates.top().aShape, false);
+ m_pSdrImport->resolve(m_aStates.top().aShape, false,
+ RTFSdrImport::SHAPE);
else
{
RTFValue::Pointer_t pValue(new RTFValue(m_aStates.top().aShape));
@@ -4326,7 +4328,11 @@ int RTFDocumentImpl::popState()
case DESTINATION_SHAPEINSTRUCTION:
// Don't trigger a shape import in case we're only leaving the \shpinst of the groupshape itself.
if (!m_bObject && !aState.bInListpicture && !aState.bHadShapeText && !(aState.bInShapeGroup && !aState.bInShape))
- m_pSdrImport->resolve(m_aStates.top().aShape, true);
+ {
+ m_pSdrImport->resolve(m_aStates.top().aShape, true,
+ (aState.nDestinationState == DESTINATION_SHAPEINSTRUCTION)
+ ? RTFSdrImport::SHAPE : RTFSdrImport::PICT);
+ }
else if (aState.bInShapeGroup && !aState.bInShape)
{
// End of a groupshape, as we're in shapegroup, but not in a real shape.
diff --git a/writerfilter/source/rtftok/rtfsdrimport.cxx b/writerfilter/source/rtftok/rtfsdrimport.cxx
index 778841446e3e..e855086561e2 100644
--- a/writerfilter/source/rtftok/rtfsdrimport.cxx
+++ b/writerfilter/source/rtftok/rtfsdrimport.cxx
@@ -212,7 +212,8 @@ void RTFSdrImport::applyProperty(uno::Reference<drawing::XShape> xShape, OUStrin
}
}
-void RTFSdrImport::resolve(RTFShape& rShape, bool bClose)
+void RTFSdrImport::resolve(RTFShape& rShape, bool bClose,
+ ShapeOrPict const shapeOrPict)
{
int nType = -1;
bool bPib = false;
@@ -243,7 +244,8 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose)
bool bOpaque = true;
// The spec doesn't state what is the default for shapeType, Word seems to implement it as a rectangle.
- if (std::find_if(rShape.aProperties.begin(),
+ if (SHAPE == shapeOrPict &&
+ std::find_if(rShape.aProperties.begin(),
rShape.aProperties.end(),
boost::bind(&OUString::equals, boost::bind(&std::pair<OUString, OUString>::first, _1), OUString("shapeType")))
== rShape.aProperties.end())
diff --git a/writerfilter/source/rtftok/rtfsdrimport.hxx b/writerfilter/source/rtftok/rtfsdrimport.hxx
index 31d08b4bba5b..e4fbaae8a825 100644
--- a/writerfilter/source/rtftok/rtfsdrimport.hxx
+++ b/writerfilter/source/rtftok/rtfsdrimport.hxx
@@ -23,7 +23,8 @@ namespace writerfilter {
RTFSdrImport(RTFDocumentImpl& rImport, uno::Reference<lang::XComponent> const& xDstDoc);
virtual ~RTFSdrImport();
- void resolve(RTFShape& rShape, bool bClose);
+ enum ShapeOrPict { SHAPE, PICT };
+ void resolve(RTFShape& rShape, bool bClose, ShapeOrPict shapeOrPict);
void close();
void append(OUString aKey, OUString aValue);
/// Append property on the current parent.