svx/qa/unit/data/theme.pptx |binary svx/qa/unit/styles.cxx | 1 + svx/source/styles/ColorSets.cxx | 6 ++++++ 3 files changed, 7 insertions(+)
New commits: commit 952b3b227e02ae4eedce3138fcb39613bf12486d Author: Miklos Vajna <vmik...@collabora.com> AuthorDate: Mon Jan 10 14:36:02 2022 +0100 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Mon Jan 10 17:38:56 2022 +0100 sd theme: fix applying new colors after theme change for group shapes UpdateSdrObject() is called for both group and non-group shapes, so don't assume that they always have text, otherwise we would crash. Change-Id: I3672673176f0cb462a8b8d61a68466f541e9ce06 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128248 Reviewed-by: Miklos Vajna <vmik...@collabora.com> Tested-by: Jenkins diff --git a/svx/qa/unit/data/theme.pptx b/svx/qa/unit/data/theme.pptx index 652a9fc29e06..74397b3ea67a 100644 Binary files a/svx/qa/unit/data/theme.pptx and b/svx/qa/unit/data/theme.pptx differ diff --git a/svx/qa/unit/styles.cxx b/svx/qa/unit/styles.cxx index 1e7151edf359..565d981e6e2e 100644 --- a/svx/qa/unit/styles.cxx +++ b/svx/qa/unit/styles.cxx @@ -68,6 +68,7 @@ CPPUNIT_TEST_FIXTURE(Test, testThemeChange) OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "theme.pptx"; getComponent() = loadFromDesktop(aURL); uno::Reference<drawing::XDrawPagesSupplier> xDrawPagesSupplier(getComponent(), uno::UNO_QUERY); + // The draw page also contains a group shape to make sure we don't crash on group shapes. uno::Reference<drawing::XMasterPageTarget> xDrawPage( xDrawPagesSupplier->getDrawPages()->getByIndex(0), uno::UNO_QUERY); uno::Reference<drawing::XShapes> xDrawPageShapes(xDrawPage, uno::UNO_QUERY); diff --git a/svx/source/styles/ColorSets.cxx b/svx/source/styles/ColorSets.cxx index c77e6ccf2d76..97c79b58bcc6 100644 --- a/svx/source/styles/ColorSets.cxx +++ b/svx/source/styles/ColorSets.cxx @@ -74,6 +74,12 @@ void UpdateSdrObject(svx::Theme* pTheme, SdrObject* pObject) } uno::Reference<text::XTextRange> xShape(pObject->getUnoShape(), uno::UNO_QUERY); + if (!xShape.is()) + { + // E.g. group shapes have no text. + return; + } + uno::Reference<container::XEnumerationAccess> xText(xShape->getText(), uno::UNO_QUERY); uno::Reference<container::XEnumeration> xParagraphs = xText->createEnumeration(); while (xParagraphs->hasMoreElements())