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

tdf#116925 sw: consider fill styles of shape for in-textbox auto color

Automatic color is determined in SwDrawTextInfo::ApplyAutoColor(), but
it uses this function to determine the background color.

Be consistent and consider the same background in both the
shape-with-editeng-text and shape-with-sw-text cases.

Change-Id: I52249a908193765bc128789d96187af334c1017c
Reviewed-on: https://gerrit.libreoffice.org/52687Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
Tested-by: 's avatarJenkins <ci@libreoffice.org>
üst c0e285d8
......@@ -17,9 +17,11 @@ class SwLayoutWriter : public SwModelTestBase
{
public:
void testTdf116830();
void testTdf116925();
CPPUNIT_TEST_SUITE(SwLayoutWriter);
CPPUNIT_TEST(testTdf116830);
CPPUNIT_TEST(testTdf116925);
CPPUNIT_TEST_SUITE_END();
private:
......@@ -62,6 +64,26 @@ void SwLayoutWriter::testTdf116830()
assertXPath(pXmlDoc, "/metafile/push[1]/push[1]/push[1]/push[3]/push[1]/rect", 1);
}
void SwLayoutWriter::testTdf116925()
{
SwDoc* pDoc = createDoc("tdf116925.docx");
SwDocShell* pShell = pDoc->GetDocShell();
// Dump the rendering of the first page as an XML file.
std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile();
MetafileXmlDump dumper;
xmlDocPtr pXmlDoc = dumper.dumpAndParse(*xMetaFile);
CPPUNIT_ASSERT(pXmlDoc);
assertXPathContent(pXmlDoc,
"/metafile/push[1]/push[1]/push[1]/push[4]/push[1]/push[3]/textarray/text",
"hello");
// This failed, text color was #000000.
assertXPath(
pXmlDoc,
"/metafile/push[1]/push[1]/push[1]/push[4]/push[1]/push[3]/textcolor[@color='#ffffff']", 1);
}
CPPUNIT_TEST_SUITE_REGISTRATION(SwLayoutWriter);
CPPUNIT_PLUGIN_IMPLEMENT();
......
......@@ -102,6 +102,7 @@
#include <edtwin.hxx>
#include <view.hxx>
#include <paintfrm.hxx>
#include <textboxhelper.hxx>
#include <o3tl/typed_flags_set.hxx>
#include <vcl/BitmapTools.hxx>
......@@ -7129,7 +7130,30 @@ bool SwFrame::GetBackgroundBrush(
return false;
if (pFrame->supportsFullDrawingLayerFillAttributeSet())
rFillAttributes = pFrame->getSdrAllFillAttributesHelper();
{
bool bTextBox = false;
if (pFrame->IsFlyFrame())
{
const SwFlyFrame* pFlyFrame = static_cast<const SwFlyFrame*>(pFrame);
SwFrameFormat* pShape
= SwTextBoxHelper::getOtherTextBoxFormat(pFlyFrame->GetFormat(), RES_FLYFRMFMT);
if (pShape)
{
SdrObject* pObject = pShape->FindRealSdrObject();
if (pObject)
{
// Work with the fill attributes of the shape of the fly frame.
rFillAttributes.reset(
new drawinglayer::attribute::SdrAllFillAttributesHelper(
pObject->GetMergedItemSet()));
bTextBox = true;
}
}
}
if (!bTextBox)
rFillAttributes = pFrame->getSdrAllFillAttributesHelper();
}
const SvxBrushItem &rBack = pFrame->GetAttrSet()->GetBackground();
if( pFrame->IsSctFrame() )
......
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