summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorThorsten Behrens <thorsten.behrens@allotropia.de>2024-02-08 14:56:56 +0100
committerThorsten Behrens <thorsten.behrens@allotropia.de>2024-02-08 14:56:56 +0100
commitcc5241301a9775bd46606ba2fbc9f237b218ef39 (patch)
treeff8a755e6f441f943881a8d909427c6f524b5276 /sd
parent4793c0015c0bbd4a0fa788de9a51f79af9bb56c0 (diff)
parent7d3edae2c3c6b0c6667bcb9e3f9988f28eb82295 (diff)
Merge tag 'libreoffice-7.6.5.1' into feature/cib_contract49
Tag libreoffice-7.6.5.1 Change-Id: I3baef049044d36500a4b98ed375d3242703d0e11
Diffstat (limited to 'sd')
-rw-r--r--sd/qa/unit/data/pptx/tdf156718.pptxbin0 -> 14422 bytes
-rw-r--r--sd/qa/unit/data/pptx/tdf157740.pptxbin0 -> 16941 bytes
-rw-r--r--sd/qa/unit/export-tests-ooxml1.cxx4
-rw-r--r--sd/qa/unit/export-tests-ooxml2.cxx20
-rw-r--r--sd/qa/unit/export-tests-ooxml3.cxx2
-rw-r--r--sd/qa/unit/import-tests.cxx70
-rw-r--r--sd/source/core/drawdoc3.cxx38
-rw-r--r--sd/source/filter/eppt/epptbase.hxx1
-rw-r--r--sd/source/filter/eppt/epptooxml.hxx8
-rw-r--r--sd/source/filter/eppt/pptx-epptooxml.cxx284
-rw-r--r--sd/source/ui/animations/CustomAnimationDialog.cxx2
-rw-r--r--sd/source/ui/animations/CustomAnimationList.cxx2
-rw-r--r--sd/source/ui/app/sddll.cxx24
-rw-r--r--sd/source/ui/app/sdmod1.cxx29
-rw-r--r--sd/source/ui/docshell/docshel4.cxx2
-rw-r--r--sd/source/ui/remotecontrol/Receiver.cxx21
-rw-r--r--sd/source/ui/slideshow/showwin.cxx12
-rw-r--r--sd/uiconfig/simpress/ui/customanimationspanel.ui10
18 files changed, 266 insertions, 263 deletions
diff --git a/sd/qa/unit/data/pptx/tdf156718.pptx b/sd/qa/unit/data/pptx/tdf156718.pptx
new file mode 100644
index 000000000000..8aeafa155762
--- /dev/null
+++ b/sd/qa/unit/data/pptx/tdf156718.pptx
Binary files differ
diff --git a/sd/qa/unit/data/pptx/tdf157740.pptx b/sd/qa/unit/data/pptx/tdf157740.pptx
new file mode 100644
index 000000000000..009e9eeb1da0
--- /dev/null
+++ b/sd/qa/unit/data/pptx/tdf157740.pptx
Binary files differ
diff --git a/sd/qa/unit/export-tests-ooxml1.cxx b/sd/qa/unit/export-tests-ooxml1.cxx
index 17a5ce94cbf6..407eef46f7b9 100644
--- a/sd/qa/unit/export-tests-ooxml1.cxx
+++ b/sd/qa/unit/export-tests-ooxml1.cxx
@@ -110,11 +110,11 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest1, testTdf149128)
xmlDocUniquePtr pXmlDoc = parseExport("ppt/slides/slide1.xml");
assertXPath(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:cxnSp/p:nvCxnSpPr/p:cNvCxnSpPr/a:stCxn", "id",
- "42");
+ "8");
assertXPath(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:cxnSp/p:nvCxnSpPr/p:cNvCxnSpPr/a:stCxn", "idx",
"0");
assertXPath(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:cxnSp/p:nvCxnSpPr/p:cNvCxnSpPr/a:endCxn", "id",
- "43");
+ "9");
assertXPath(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:cxnSp/p:nvCxnSpPr/p:cNvCxnSpPr/a:endCxn", "idx",
"2");
}
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index ed6568d0bc1f..65102c143c1d 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -157,6 +157,22 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest2, testTdf153107)
"tl");
}
+CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest2, testTdf157740_slideMasters)
+{
+ createSdImpressDoc("pptx/tdf157740.pptx");
+ saveAndReload("Impress Office Open XML");
+
+ // Test how many slidemaster we have
+ xmlDocUniquePtr pXmlDocContent = parseExport("ppt/presentation.xml");
+ assertXPath(pXmlDocContent, "/p:presentation/p:sldMasterIdLst/p:sldMasterId", 7);
+
+ pXmlDocContent = parseExport("ppt/slideMasters/slideMaster1.xml");
+ assertXPath(pXmlDocContent, "/p:sldMaster/p:sldLayoutIdLst/p:sldLayoutId", 1);
+
+ pXmlDocContent = parseExport("ppt/slideMasters/slideMaster7.xml");
+ assertXPath(pXmlDocContent, "/p:sldMaster/p:sldLayoutIdLst/p:sldLayoutId", 1);
+}
+
CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest2, testTdf142291)
{
createSdImpressDoc("pptx/tdt142291.pptx");
@@ -1313,7 +1329,7 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest2, testTdf106867)
"/p:sld/p:timing/p:tnLst/p:par/p:cTn/p:childTnLst/p:seq/p:cTn/p:childTnLst/p:par/"
"p:cTn/p:childTnLst/p:par/p:cTn/p:childTnLst/p:par/p:cTn/p:childTnLst/p:cmd/"
"p:cBhvr/p:tgtEl/p:spTgt",
- "spid", "42");
+ "spid", "67");
}
CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest2, testTdf112280)
@@ -1692,7 +1708,7 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest2, testAccentColor)
xmlDocUniquePtr pXmlDocTheme1 = parseExport("ppt/theme/theme1.xml");
assertXPath(pXmlDocTheme1, "/a:theme/a:themeElements/a:clrScheme/a:accent6/a:srgbClr", "val",
"70ad47");
- xmlDocUniquePtr pXmlDocTheme2 = parseExport("ppt/theme/theme2.xml");
+ xmlDocUniquePtr pXmlDocTheme2 = parseExport("ppt/theme/theme12.xml");
assertXPath(pXmlDocTheme2, "/a:theme/a:themeElements/a:clrScheme/a:accent6/a:srgbClr", "val",
"deb340");
diff --git a/sd/qa/unit/export-tests-ooxml3.cxx b/sd/qa/unit/export-tests-ooxml3.cxx
index 3d630db22aa3..6a66e59af884 100644
--- a/sd/qa/unit/export-tests-ooxml3.cxx
+++ b/sd/qa/unit/export-tests-ooxml3.cxx
@@ -573,7 +573,7 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest3, testTdf125573_FontWorkScaleX)
// BoundRect is DPI dependent, thus allow some range.
// Expected width is 13139 in 96dpi and is 13106 in 120 dpi, for example
// (Without fix Expected less than: 85 Actual : 10432)
- CPPUNIT_ASSERT_LESS(sal_Int32(85), std::abs(aBoundRectArch.Width - 13139));
+ CPPUNIT_ASSERT_LESS(sal_Int32(85), std::abs(aBoundRectArch.Width - 13145));
// Error was, that text in shapes of category "Warp" was not scaled to the path.
uno::Reference<beans::XPropertySet> xShapeWaveProps(getShapeFromPage(0, 1));
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index adc7c12e4632..85d25f831e83 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -34,6 +34,7 @@
#include <sax/tools/converter.hxx>
#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/awt/FontWeight.hpp>
#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
#include <com/sun/star/document/XEventsSupplier.hpp>
#include <com/sun/star/presentation/ClickAction.hpp>
@@ -203,6 +204,75 @@ CPPUNIT_TEST_FIXTURE(SdImportTest, testDocumentLayout)
}
}
+CPPUNIT_TEST_FIXTURE(SdImportTest, testTableStyle)
+{
+ createSdImpressDoc("pptx/tdf156718.pptx");
+ const SdrPage* pPage = GetPage(1);
+
+ sdr::table::SdrTableObj* pTableObj = dynamic_cast<sdr::table::SdrTableObj*>(pPage->GetObj(0));
+ CPPUNIT_ASSERT(pTableObj);
+
+ uno::Reference<table::XCellRange> xTable(pTableObj->getTable(), uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xCellPropSet;
+ uno::Reference<beans::XPropertySet> xRunPropSet;
+ uno::Reference<text::XTextRange> xParagraph;
+ uno::Reference<text::XTextRange> xRun;
+ table::BorderLine2 aBorderLine;
+ Color nFillColor, nCharColor;
+ float nFontWeight;
+
+ xCellPropSet.set(xTable->getCellByPosition(0, 0), uno::UNO_QUERY_THROW);
+ xParagraph.set(getParagraphFromShape(0, xCellPropSet));
+ xRun.set(getRunFromParagraph(0, xParagraph));
+ xRunPropSet.set(xRun, uno::UNO_QUERY_THROW);
+ xRunPropSet->getPropertyValue("CharColor") >>= nCharColor;
+ xRunPropSet->getPropertyValue("CharWeight") >>= nFontWeight;
+ xCellPropSet->getPropertyValue("BottomBorder") >>= aBorderLine;
+ CPPUNIT_ASSERT_EQUAL(Color(0x000000), nCharColor);
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD, nFontWeight);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("The bottom border is missing!", true, aBorderLine.LineWidth > 0);
+
+ xCellPropSet.set(xTable->getCellByPosition(1, 0), uno::UNO_QUERY_THROW);
+ xParagraph.set(getParagraphFromShape(0, xCellPropSet));
+ xRun.set(getRunFromParagraph(0, xParagraph));
+ xRunPropSet.set(xRun, uno::UNO_QUERY_THROW);
+ xRunPropSet->getPropertyValue("CharColor") >>= nCharColor;
+ xRunPropSet->getPropertyValue("CharWeight") >>= nFontWeight;
+ CPPUNIT_ASSERT_EQUAL(Color(0x000000), nCharColor);
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD, nFontWeight);
+
+ xCellPropSet.set(xTable->getCellByPosition(2, 0), uno::UNO_QUERY_THROW);
+ xParagraph.set(getParagraphFromShape(0, xCellPropSet));
+ xRun.set(getRunFromParagraph(0, xParagraph));
+ xRunPropSet.set(xRun, uno::UNO_QUERY_THROW);
+ xRunPropSet->getPropertyValue("CharColor") >>= nCharColor;
+ xRunPropSet->getPropertyValue("CharWeight") >>= nFontWeight;
+ CPPUNIT_ASSERT_EQUAL(Color(0x000000), nCharColor);
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD, nFontWeight);
+
+ xCellPropSet.set(xTable->getCellByPosition(0, 1), uno::UNO_QUERY_THROW);
+ xParagraph.set(getParagraphFromShape(0, xCellPropSet));
+ xRun.set(getRunFromParagraph(0, xParagraph));
+ xRunPropSet.set(xRun, uno::UNO_QUERY_THROW);
+ xRunPropSet->getPropertyValue("CharColor") >>= nCharColor;
+ xRunPropSet->getPropertyValue("CharWeight") >>= nFontWeight;
+ xCellPropSet->getPropertyValue("FillColor") >>= nFillColor;
+ CPPUNIT_ASSERT_EQUAL(Color(0x000000), nCharColor);
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD, nFontWeight);
+ CPPUNIT_ASSERT_EQUAL(Color(0x5b9bd5), nFillColor);
+
+ xCellPropSet.set(xTable->getCellByPosition(2, 1), uno::UNO_QUERY_THROW);
+ xParagraph.set(getParagraphFromShape(0, xCellPropSet));
+ xRun.set(getRunFromParagraph(0, xParagraph));
+ xRunPropSet.set(xRun, uno::UNO_QUERY_THROW);
+ xRunPropSet->getPropertyValue("CharColor") >>= nCharColor;
+ xRunPropSet->getPropertyValue("CharWeight") >>= nFontWeight;
+ xCellPropSet->getPropertyValue("FillColor") >>= nFillColor;
+ CPPUNIT_ASSERT_EQUAL(Color(0x000000), nCharColor);
+ CPPUNIT_ASSERT_EQUAL(awt::FontWeight::BOLD, nFontWeight);
+ CPPUNIT_ASSERT_EQUAL(Color(0x5b9bd5), nFillColor);
+}
+
CPPUNIT_TEST_FIXTURE(SdImportTest, testFreeformShapeGluePoints)
{
createSdImpressDoc("pptx/tdf156829.pptx");
diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx
index 00006fbefd24..eb830484b376 100644
--- a/sd/source/core/drawdoc3.cxx
+++ b/sd/source/core/drawdoc3.cxx
@@ -67,11 +67,11 @@ namespace {
class InsertBookmarkAsPage_FindDuplicateLayouts
{
public:
- explicit InsertBookmarkAsPage_FindDuplicateLayouts( std::vector<OUString> &rLayoutsToTransfer )
+ explicit InsertBookmarkAsPage_FindDuplicateLayouts( std::map<OUString, sal_Int32> &rLayoutsToTransfer )
: mrLayoutsToTransfer(rLayoutsToTransfer) {}
void operator()( SdDrawDocument&, SdPage const *, bool, SdDrawDocument* );
private:
- std::vector<OUString> &mrLayoutsToTransfer;
+ std::map<OUString, sal_Int32> &mrLayoutsToTransfer;
};
}
@@ -85,11 +85,11 @@ void InsertBookmarkAsPage_FindDuplicateLayouts::operator()( SdDrawDocument& rDoc
if( nIndex != -1 )
aLayout = aLayout.copy(0, nIndex);
- std::vector<OUString>::const_iterator pIter =
- find(mrLayoutsToTransfer.begin(),mrLayoutsToTransfer.end(),aLayout);
+ std::map<OUString, sal_Int32>::const_iterator pIter = mrLayoutsToTransfer.find(aLayout);
bool bFound = pIter != mrLayoutsToTransfer.end();
+ sal_Int32 nLayout = 20; // blank page - master slide layout ID
const sal_uInt16 nMPageCount = rDoc.GetMasterPageCount();
for (sal_uInt16 nMPage = 0; nMPage < nMPageCount && !bFound; nMPage++)
{
@@ -110,6 +110,15 @@ void InsertBookmarkAsPage_FindDuplicateLayouts::operator()( SdDrawDocument& rDoc
pBMMPage->GetLayoutName(), pBMMPage->GetName() + "_");
aLayout = pBMMPage->GetName();
+ uno::Reference< drawing::XDrawPage > xOldPage(rDoc.GetMasterPage(nMPage)->getUnoPage(), uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xPropSet(xOldPage, uno::UNO_QUERY_THROW);
+ if (xPropSet.is())
+ {
+ uno::Any aLayoutID = xPropSet->getPropertyValue("SlideLayout");
+ if (aLayoutID.hasValue()) {
+ aLayoutID >>= nLayout;
+ }
+ }
break;
}
else
@@ -118,7 +127,7 @@ void InsertBookmarkAsPage_FindDuplicateLayouts::operator()( SdDrawDocument& rDoc
}
if (!bFound)
- mrLayoutsToTransfer.push_back(aLayout);
+ mrLayoutsToTransfer.insert({ aLayout, nLayout });
}
// Inserts a bookmark as a page
@@ -499,7 +508,7 @@ bool SdDrawDocument::InsertBookmarkAsPage(
// Refactored copy'n'pasted layout name collection into IterateBookmarkPages
- std::vector<OUString> aLayoutsToTransfer;
+ std::map<OUString, sal_Int32> aLayoutsToTransfer;
InsertBookmarkAsPage_FindDuplicateLayouts aSearchFunctor( aLayoutsToTransfer );
lcl_IterateBookmarkPages( *this, pBookmarkDoc, rBookmarkList, nBMSdPageCount, aSearchFunctor, ( rBookmarkList.empty() && pBookmarkDoc != this ) );
@@ -511,11 +520,11 @@ bool SdDrawDocument::InsertBookmarkAsPage(
if( !aLayoutsToTransfer.empty() )
bMergeMasterPages = true;
- for ( const OUString& layoutName : aLayoutsToTransfer )
+ for ( const auto& layout : aLayoutsToTransfer )
{
StyleSheetCopyResultVector aCreatedStyles;
- rStyleSheetPool.CopyLayoutSheets(layoutName, rBookmarkStyleSheetPool,aCreatedStyles);
+ rStyleSheetPool.CopyLayoutSheets(layout.first, rBookmarkStyleSheetPool, aCreatedStyles);
if(!aCreatedStyles.empty())
{
@@ -897,6 +906,19 @@ bool SdDrawDocument::InsertBookmarkAsPage(
pRefPage->SetSize(aSize);
pRefPage->SetBorder(nLeft, nUpper, nRight, nLower);
pRefPage->SetOrientation( eOrient );
+
+ uno::Reference< drawing::XDrawPage > xNewPage(GetMasterPage(nPage)->getUnoPage(), uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xNewPropSet(xNewPage, uno::UNO_QUERY_THROW);
+ if (xNewPropSet.is())
+ {
+ OUString aLayout(pRefPage->GetName());
+ sal_Int32 nLayout = 20; // blank page - master slide layout ID
+ if (auto it{ aLayoutsToTransfer.find(aLayout) }; it != std::end(aLayoutsToTransfer))
+ {
+ nLayout = it->second;
+ }
+ xNewPropSet->setPropertyValue("SlideLayout", uno::Any(nLayout));
+ }
}
else // Can only be notes
{
diff --git a/sd/source/filter/eppt/epptbase.hxx b/sd/source/filter/eppt/epptbase.hxx
index c56866b248fe..70bcd3a4b6ce 100644
--- a/sd/source/filter/eppt/epptbase.hxx
+++ b/sd/source/filter/eppt/epptbase.hxx
@@ -74,6 +74,7 @@ enum class EppLayout
};
#define EPP_LAYOUT_SIZE 25
+#define OOXML_LAYOUT_SIZE 36
struct PHLayout
{
diff --git a/sd/source/filter/eppt/epptooxml.hxx b/sd/source/filter/eppt/epptooxml.hxx
index 6d804c80cf1f..d9d65a2e8300 100644
--- a/sd/source/filter/eppt/epptooxml.hxx
+++ b/sd/source/filter/eppt/epptooxml.hxx
@@ -89,7 +89,7 @@ private:
bool bHasBackground, css::uno::Reference< css::beans::XPropertySet > const & aXBackgroundPropSet ) override;
virtual void ImplWriteNotes( sal_uInt32 nPageNum ) override;
virtual void ImplWriteSlideMaster( sal_uInt32 nPageNum, css::uno::Reference< css::beans::XPropertySet > const & aXBackgroundPropSet ) override;
- void ImplWritePPTXLayout( sal_Int32 nOffset, sal_uInt32 nMasterNum );
+ void ImplWritePPTXLayout( sal_Int32 nOffset, sal_uInt32 nMasterNum, const OUString& aSlideName );
static void WriteDefaultColorSchemes(const FSHelperPtr& pFS);
void WriteTheme( sal_Int32 nThemeNum, model::Theme* pTheme );
@@ -131,8 +131,6 @@ private:
css::uno::Reference<css::drawing::XShape> GetReferencedPlaceholderXShape(const PlaceholderType eType, PageType ePageType) const;
void WritePlaceholderReferenceShapes(PowerPointShapeExport& rDML, PageType ePageType);
- long FindEquivalentMasterPage(SdrPage* pMasterPage) const;
-
/// Should we export as .pptm, ie. do we contain macros?
bool mbPptm;
@@ -141,15 +139,13 @@ private:
::sax_fastparser::FSHelperPtr mPresentationFS;
- LayoutInfo mLayoutInfo[EPP_LAYOUT_SIZE];
- std::vector<std::pair<SdrPage*, size_t>> mpSlidesMaster;
+ LayoutInfo mLayoutInfo[OOXML_LAYOUT_SIZE];
std::vector< ::sax_fastparser::FSHelperPtr > mpSlidesFSArray;
sal_Int32 mnLayoutFileIdMax;
sal_uInt32 mnSlideIdMax;
sal_uInt32 mnSlideMasterIdMax;
sal_uInt32 mnAnimationNodeIdMax;
- sal_uInt32 mnThemeIdMax;
sal_uInt32 mnDiagramId;
diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx b/sd/source/filter/eppt/pptx-epptooxml.cxx
index 9ef04c891ca1..0967b6a3b34e 100644
--- a/sd/source/filter/eppt/pptx-epptooxml.cxx
+++ b/sd/source/filter/eppt/pptx-epptooxml.cxx
@@ -25,8 +25,6 @@
#include <oox/ole/vbaproject.hxx>
#include "epptooxml.hxx"
#include <oox/export/shapes.hxx>
-#include <svx/svdlayer.hxx>
-#include <unokywds.hxx>
#include <comphelper/sequenceashashmap.hxx>
#include <comphelper/storagehelper.hxx>
@@ -42,8 +40,6 @@
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/XDrawPages.hpp>
#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
-#include <com/sun/star/drawing/XMasterPageTarget.hpp>
-#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
#include <com/sun/star/embed/ElementModes.hpp>
#include <com/sun/star/geometry/RealPoint2D.hpp>
#include <com/sun/star/office/XAnnotationEnumeration.hpp>
@@ -191,23 +187,6 @@ const char* getPlaceholderTypeName(PlaceholderType ePlaceholder)
namespace {
-enum PPTXLayout
-{
- LAYOUT_BLANK,
- LAYOUT_TITLE_SLIDE,
- LAYOUT_TITLE_CONTENT,
- LAYOUT_TITLE_2CONTENT,
- LAYOUT_TITLE,
- LAYOUT_CENTERED_TEXT,
- LAYOUT_TITLE_2CONTENT_CONTENT,
- LAYOUT_TITLE_CONTENT_2CONTENT,
- LAYOUT_TITLE_2CONTENT_OVER_CONTENT,
- LAYOUT_TITLE_CONTENT_OVER_CONTENT,
- LAYOUT_TITLE_4CONTENT,
- LAYOUT_TITLE_6CONTENT,
- LAYOUT_SIZE
-};
-
struct PPTXLayoutInfo
{
int nType;
@@ -217,72 +196,46 @@ struct PPTXLayoutInfo
}
-const PPTXLayoutInfo aLayoutInfo[LAYOUT_SIZE] =
-{
- { 20, "Blank Slide", "blank" },
- { 0, "Title Slide", "tx" },
- { 1, "Title, Content", "obj" },
- { 3, "Title, 2 Content", "twoObj" },
+const PPTXLayoutInfo aLayoutInfo[OOXML_LAYOUT_SIZE] =
+{
+ { 0, "Title Slide", "title" },
+ { 1, "Title and text", "tx" },
+ { 2, "Title and chart", "chart" },
+ { 3, "Title, text on left, text on right", "twoObj" },
+ { 4, "Title, text on left and chart on right", "txAndChart" },
+ { 6, "Title, text on left, clip art on right", "txAndClipArt" },
+ { 6, "Title, text on left, media on right", "txAndMedia" },
+ { 7, "Title, chart on left and text on right", "chartAndTx" },
+ { 8, "Title and table", "tbl" },
+ { 9, "Title, clipart on left, text on right", "clipArtAndTx" },
+ { 10, "Title, text on left, object on right", "txAndObj" },
+ { 1, "Title and object", "obj" },
+ { 12, "Title, text on left, two objects on right", "txAndTwoObj" },
+ { 13, "Title, object on left, text on right", "objAndTx" },
+ { 14, "Title, object on top, text on bottom", "objOverTx" },
+ { 15, "Title, two objects on left, text on right", "twoObjAndTx" },
+ { 16, "Title, two objects on top, text on bottom", "twoObjOverTx" },
+ { 17, "Title, text on top, object on bottom", "txOverObj" },
+ { 18, "Title and four objects", "fourObj" },
{ 19, "Title Only", "titleOnly" },
- { 32, "Centered Text", "objOnly" }, // not exactly, but close
- { 15, "Title, 2 Content and Content", "twoObjAndObj" },
- { 12, "Title Content and 2 Content", "objAndTwoObj" },
- { 16, "Title, 2 Content over Content", "twoObjOverTx" }, // not exactly, but close
- { 14, "Title, Content over Content", "objOverTx" }, // not exactly, but close
- { 18, "Title, 4 Content", "fourObj" },
- { 34, "Title, 6 Content", "blank" } // not defined => blank
+ { 20, "Blank Slide", "blank" },
+ { 21, "Vertical title on right, vertical text on top, chart on bottom", "vertTitleAndTxOverChart" },
+ { 22, "Vertical title on right, vertical text on left", "vertTitleAndTx" },
+ { 23, "Title and vertical text body", "vertTx" },
+ { 24, "Title, clip art on left, vertical text on right", "clipArtAndVertTx" },
+ { 20, "Title, two objects each with text", "twoTxTwoObj" },
+ { 15, "Title, two objects on left, one object on right", "twoObjAndObj" },
+ { 20, "Title, object and caption text", "objTx" },
+ { 20, "Title, picture, and caption text", "picTx" },
+ { 20, "Section header title and subtitle text", "secHead" },
+ { 32, "Object only", "objOnly" },
+ { 12, "Title, one object on left, two objects on right", "objAndTwoObj" },
+ { 20, "Title, media on left, text on right", "mediaAndTx" },
+ { 34, "Title, 6 Content", "blank" }, // not defined in OOXML => blank
+ { 2, "Title and diagram", "dgm" },
+ { 0, "Custom layout defined by user", "cust" },
};
-int PowerPointExport::GetPPTXLayoutId(int nOffset)
-{
- int nId = LAYOUT_BLANK;
-
- SAL_INFO("sd.eppt", "GetPPTXLayoutId " << nOffset);
-
- switch (nOffset)
- {
- case 0:
- nId = LAYOUT_TITLE_SLIDE;
- break;
- case 1:
- nId = LAYOUT_TITLE_CONTENT;
- break;
- case 3:
- nId = LAYOUT_TITLE_2CONTENT;
- break;
- case 19:
- nId = LAYOUT_TITLE;
- break;
- case 15:
- nId = LAYOUT_TITLE_2CONTENT_CONTENT;
- break;
- case 12:
- nId = LAYOUT_TITLE_CONTENT_2CONTENT;
- break;
- case 16:
- nId = LAYOUT_TITLE_2CONTENT_OVER_CONTENT;
- break;
- case 14:
- nId = LAYOUT_TITLE_CONTENT_OVER_CONTENT;
- break;
- case 18:
- nId = LAYOUT_TITLE_4CONTENT;
- break;
- case 32:
- nId = LAYOUT_CENTERED_TEXT;
- break;
- case 34:
- nId = LAYOUT_TITLE_6CONTENT;
- break;
- case 20:
- default:
- nId = LAYOUT_BLANK;
- break;
- }
-
- return nId;
-}
-
PowerPointShapeExport::PowerPointShapeExport(FSHelperPtr pFS, ShapeHashMap* pShapeMap,
PowerPointExport* pFB)
: ShapeExport(XML_p, std::move(pFS), pShapeMap, pFB)
@@ -392,7 +345,6 @@ PowerPointExport::PowerPointExport(const Reference< XComponentContext >& rContex
, mnSlideIdMax(1 << 8)
, mnSlideMasterIdMax(1U << 31)
, mnAnimationNodeIdMax(1)
- , mnThemeIdMax(0)
, mnDiagramId(1)
, mbCreateNotes(false)
, mnPlaceholderIndexMax(1)
@@ -1428,7 +1380,7 @@ void PowerPointExport::ImplWriteSlide(sal_uInt32 nPageNum, sal_uInt32 nMasterNum
addRelation(pFS->getOutputStream(),
oox::getRelationship(Relationship::SLIDELAYOUT),
Concat2View("../slideLayouts/slideLayout" +
- OUString::number(GetLayoutFileId(GetPPTXLayoutId(GetLayoutOffset(mXPagePropSet)), nMasterNum)) +
+ OUString::number(GetLayoutFileId(GetLayoutOffset(mXPagePropSet), nMasterNum)) +
".xml"));
if (WriteComments(nPageNum))
@@ -1496,111 +1448,8 @@ void PowerPointExport::AddLayoutIdAndRelation(const FSHelperPtr& pFS, sal_Int32
FSNS(XML_r, XML_id), sRelId);
}
-static bool lcl_ContainsEquivalentObject(SdrPage* pPage, SdrObject* pObj)
-{
- bool bFound = false;
- SdrObject* pObjNext;
-
- if (!pPage || !pObj)
- return bFound;
-
- for (size_t nObj = 0; nObj < pPage->GetObjCount(); ++nObj)
- {
- pObjNext = pPage->GetObj(nObj);
- if (pObjNext && pObjNext->GetMergedItemSet().Equals(
- pObj->GetMergedItemSet(), false))
- {
- bFound = true;
- break;
- }
- }
-
- return bFound;
-}
-
-static bool lcl_ComparePageObjects(SdrPage* pMasterPage, SdrPage* pMasterNext)
-{
- if (!pMasterPage || !pMasterNext)
- return false;
-
- bool bFound = true;
- SdrObject* pObjNext;
- SdrLayerID aLayer =
- pMasterNext->GetLayerAdmin().GetLayerID(sUNO_LayerName_background_objects);
-
- for (size_t nObj = 0; nObj < pMasterPage->GetObjCount(); ++nObj)
- {
- pObjNext = pMasterPage->GetObj(nObj);
- if (!pObjNext || pObjNext->GetLayer() == aLayer)
- continue;
-
- if (!lcl_ContainsEquivalentObject(pMasterNext, pObjNext))
- {
- bFound = false;
- break;
- }
- }
-
- return bFound;
-}
-
-long PowerPointExport::FindEquivalentMasterPage(SdrPage* pMasterPage) const
-{
- SdrPage* pMasterNext;
- long nFound = -1;
-
- if (!pMasterPage)
- return nFound;
-
- for (size_t nMaster = 0; nMaster < mpSlidesMaster.size(); ++nMaster)
- {
- pMasterNext = mpSlidesMaster[nMaster].first;
- if (!pMasterNext)
- continue;
-
- if (pMasterNext->getSdrPageProperties().GetItemSet().Equals(
- pMasterPage->getSdrPageProperties().GetItemSet(), false) &&
- lcl_ComparePageObjects(pMasterPage, pMasterNext))
- {
- nFound = nMaster;
- break;
- }
- }
-
- return nFound;
-}
-
void PowerPointExport::ImplWriteSlideMaster(sal_uInt32 nPageNum, Reference< XPropertySet > const& aXBackgroundPropSet)
{
- SdrPage* pMasterPage = SdPage::getImplementation(mXDrawPage);
- if (!pMasterPage)
- return;
-
- uno::Reference<beans::XPropertySet> xPropSet(mXDrawPage, uno::UNO_QUERY_THROW);
- if (!xPropSet.is())
- return;
-
- sal_Int32 nLayout = 0;
- Any aLayout = xPropSet->getPropertyValue("SlideLayout");
- long nFound = FindEquivalentMasterPage(pMasterPage);
- if (aLayout.hasValue() && nFound != -1)
- {
- aLayout >>= nLayout;
- size_t nOffset = GetPPTXLayoutId(nLayout);
-
- if (mLayoutInfo[nOffset].mnFileIdArray.size() < mnMasterPages)
- {
- mLayoutInfo[nOffset].mnFileIdArray.resize(mnMasterPages);
- }
-
- mLayoutInfo[nOffset].mnFileIdArray[nPageNum] = mpSlidesMaster[nFound].second;
-
- if (nPageNum == mnMasterPages - 1)
- mPresentationFS->endElementNS(XML_p, XML_sldMasterIdLst);
-
- return;
- }
-
SAL_INFO("sd.eppt", "write master slide: " << nPageNum << "\n--------------");
// slides list
@@ -1623,7 +1472,7 @@ void PowerPointExport::ImplWriteSlideMaster(sal_uInt32 nPageNum, Reference< XPro
OUString::number(nPageNum + 1) + ".xml",
"application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml");
-
+ SdrPage* pMasterPage = SdPage::getImplementation(mXDrawPage);
model::Theme* pTheme = nullptr;
if (pMasterPage)
{
@@ -1631,12 +1480,12 @@ void PowerPointExport::ImplWriteSlideMaster(sal_uInt32 nPageNum, Reference< XPro
}
// write theme per master
- WriteTheme(mnThemeIdMax, pTheme);
+ WriteTheme(nPageNum, pTheme);
// add implicit relation to the presentation theme
addRelation(pFS->getOutputStream(),
oox::getRelationship(Relationship::THEME),
- Concat2View("../theme/theme" + OUString::number(++mnThemeIdMax) + ".xml"));
+ Concat2View("../theme/theme" + OUString::number(nPageNum + 1) + ".xml"));
pFS->startElementNS(XML_p, XML_sldMaster, PNMSS);
@@ -1666,26 +1515,23 @@ void PowerPointExport::ImplWriteSlideMaster(sal_uInt32 nPageNum, Reference< XPro
// use master's id type as they have same range, mso does that as well
pFS->startElementNS(XML_p, XML_sldLayoutIdLst);
- for (int i = 0; i < LAYOUT_SIZE; i++)
+ sal_Int32 nLayout = 0;
+ OUString aSlideName;
+ css::uno::Reference< css::beans::XPropertySet >xPagePropSet;
+ xPagePropSet.set(mXDrawPage, UNO_QUERY);
+ if (xPagePropSet.is())
{
- sal_Int32 nLayoutFileId = GetLayoutFileId(i, nPageNum);
- if (nLayoutFileId > 0)
- {
- AddLayoutIdAndRelation(pFS, nLayoutFileId);
- }
- else
- {
- ImplWritePPTXLayout(i, nPageNum);
- AddLayoutIdAndRelation(pFS, GetLayoutFileId(i, nPageNum));
- }
+ uno::Any aAny;
+ if (GetPropertyValue(aAny, xPagePropSet, "SlideLayout"))
+ aAny >>= nLayout;
}
- if (aLayout.hasValue())
- {
- aLayout >>= nLayout;
- mpSlidesMaster.push_back(std::make_pair(pMasterPage,
- GetLayoutFileId(GetPPTXLayoutId(nLayout), nPageNum)));
- }
+ Reference< XNamed > xNamed(mXDrawPage, UNO_QUERY);
+ if (xNamed.is())
+ aSlideName = xNamed->getName();
+
+ ImplWritePPTXLayout(nLayout, nPageNum, aSlideName);
+ AddLayoutIdAndRelation(pFS, GetLayoutFileId(nLayout, nPageNum));
pFS->endElementNS(XML_p, XML_sldLayoutIdLst);
@@ -1705,7 +1551,7 @@ sal_Int32 PowerPointExport::GetLayoutFileId(sal_Int32 nOffset, sal_uInt32 nMaste
return mLayoutInfo[ nOffset ].mnFileIdArray[ nMasterNum ];
}
-void PowerPointExport::ImplWritePPTXLayout(sal_Int32 nOffset, sal_uInt32 nMasterNum)
+void PowerPointExport::ImplWritePPTXLayout(sal_Int32 nOffset, sal_uInt32 nMasterNum, const OUString& aSlideName)
{
SAL_INFO("sd.eppt", "write layout: " << nOffset);
@@ -1749,8 +1595,16 @@ void PowerPointExport::ImplWritePPTXLayout(sal_Int32 nOffset, sal_uInt32 nMaster
XML_type, aLayoutInfo[ nOffset ].sType,
XML_preserve, "1");
- pFS->startElementNS(XML_p, XML_cSld,
- XML_name, aLayoutInfo[ nOffset ].sName);
+ if (!aSlideName.isEmpty())
+ {
+ pFS->startElementNS(XML_p, XML_cSld,
+ XML_name, aSlideName);
+ }
+ else
+ {
+ pFS->startElementNS(XML_p, XML_cSld,
+ XML_name, aLayoutInfo[nOffset].sName);
+ }
//pFS->write( MINIMAL_SPTREE ); // TODO: write actual shape tree
WriteShapeTree(pFS, LAYOUT, true);
@@ -2385,11 +2239,9 @@ Reference<XShape> PowerPointExport::GetReferencedPlaceholderXShape(const Placeho
}
else
{
- SdrPage* pPage = &SdPage::getImplementation(mXDrawPage)->TRG_GetMasterPage();
- long nFound = FindEquivalentMasterPage(pPage);
- pMasterPage = dynamic_cast<SdPage*>(nFound != -1 ? mpSlidesMaster[nFound].first : pPage);
+ pMasterPage = &static_cast<SdPage&>(SdPage::getImplementation(mXDrawPage)->TRG_GetMasterPage());
}
- if (SdrObject* pMasterFooter = (pMasterPage ? pMasterPage->GetPresObj(ePresObjKind) : nullptr))
+ if (SdrObject* pMasterFooter = pMasterPage->GetPresObj(ePresObjKind))
return GetXShapeForSdrObject(pMasterFooter);
}
return nullptr;
diff --git a/sd/source/ui/animations/CustomAnimationDialog.cxx b/sd/source/ui/animations/CustomAnimationDialog.cxx
index e12e6ea123e7..8a2bdffcb162 100644
--- a/sd/source/ui/animations/CustomAnimationDialog.cxx
+++ b/sd/source/ui/animations/CustomAnimationDialog.cxx
@@ -528,7 +528,7 @@ void SdRotationPropertyBox::updateMenu()
mxControl->set_item_active("360", nValue == 360);
mxControl->set_item_active("720", nValue == 720);
- mxControl->set_item_active("closewise", bDirection);
+ mxControl->set_item_active("clockwise", bDirection);
mxControl->set_item_active("counterclock", !bDirection);
}
diff --git a/sd/source/ui/animations/CustomAnimationList.cxx b/sd/source/ui/animations/CustomAnimationList.cxx
index 0128f210eb77..fecbfa38c52e 100644
--- a/sd/source/ui/animations/CustomAnimationList.cxx
+++ b/sd/source/ui/animations/CustomAnimationList.cxx
@@ -449,7 +449,7 @@ CustomAnimationList::CustomAnimationList(std::unique_ptr<weld::TreeView> xTreeVi
mxTreeView->connect_drag_begin(LINK(this, CustomAnimationList, DragBeginHdl));
mxTreeView->connect_custom_get_size(LINK(this, CustomAnimationList, CustomGetSizeHdl));
mxTreeView->connect_custom_render(LINK(this, CustomAnimationList, CustomRenderHdl));
- mxTreeView->set_column_custom_renderer(0, true);
+ mxTreeView->set_column_custom_renderer(1, true);
}
CustomAnimationListDropTarget::CustomAnimationListDropTarget(CustomAnimationList& rTreeView)
diff --git a/sd/source/ui/app/sddll.cxx b/sd/source/ui/app/sddll.cxx
index c195869b790e..b4734310a39b 100644
--- a/sd/source/ui/app/sddll.cxx
+++ b/sd/source/ui/app/sddll.cxx
@@ -91,12 +91,24 @@ void SdDLL::RegisterFactorys()
{
::sd::ImpressViewShellBase::RegisterFactory (
::sd::IMPRESS_FACTORY_ID);
- ::sd::SlideSorterViewShellBase::RegisterFactory (
- ::sd::SLIDE_SORTER_FACTORY_ID);
- ::sd::OutlineViewShellBase::RegisterFactory (
- ::sd::OUTLINE_FACTORY_ID);
- ::sd::PresentationViewShellBase::RegisterFactory (
- ::sd::PRESENTATION_FACTORY_ID);
+ if (comphelper::LibreOfficeKit::isActive())
+ {
+ ::sd::ImpressViewShellBase::RegisterFactory (
+ ::sd::SLIDE_SORTER_FACTORY_ID);
+ ::sd::ImpressViewShellBase::RegisterFactory (
+ ::sd::OUTLINE_FACTORY_ID);
+ ::sd::ImpressViewShellBase::RegisterFactory (
+ ::sd::PRESENTATION_FACTORY_ID);
+ }
+ else
+ {
+ ::sd::SlideSorterViewShellBase::RegisterFactory (
+ ::sd::SLIDE_SORTER_FACTORY_ID);
+ ::sd::OutlineViewShellBase::RegisterFactory (
+ ::sd::OUTLINE_FACTORY_ID);
+ ::sd::PresentationViewShellBase::RegisterFactory (
+ ::sd::PRESENTATION_FACTORY_ID);
+ }
}
if (!utl::ConfigManager::IsFuzzing() && SvtModuleOptions().IsDraw())
{
diff --git a/sd/source/ui/app/sdmod1.cxx b/sd/source/ui/app/sdmod1.cxx
index 881d5aa1eefd..eeaa12166bb1 100644
--- a/sd/source/ui/app/sdmod1.cxx
+++ b/sd/source/ui/app/sdmod1.cxx
@@ -33,6 +33,7 @@
#include <sfx2/docfile.hxx>
#include <sfx2/request.hxx>
#include <sfx2/templatedlg.hxx>
+#include <svl/stritem.hxx>
#include <editeng/eeitem.hxx>
#include <svx/svxids.hrc>
@@ -192,26 +193,32 @@ void SdModule::Execute(SfxRequest& rReq)
{
bool bIntercept = false;
::sd::DrawDocShell* pDocShell = dynamic_cast< ::sd::DrawDocShell *>( SfxObjectShell::Current() );
- if (pDocShell)
+ ::sd::ViewShell* pViewShell = pDocShell ? pDocShell->GetViewShell() : nullptr;
+ if (pViewShell)
{
- ::sd::ViewShell* pViewShell = pDocShell->GetViewShell();
- if (pViewShell)
+ if( sd::SlideShow::IsRunning( pViewShell->GetViewShellBase() ) )
{
- if( sd::SlideShow::IsRunning( pViewShell->GetViewShellBase() ) )
+ // Prevent documents from opening while the slide
+ // show is running, except when this request comes
+ // from a shape interaction.
+ if (rReq.GetArgs() == nullptr)
{
- // Prevent documents from opening while the slide
- // show is running, except when this request comes
- // from a shape interaction.
- if (rReq.GetArgs() == nullptr)
- {
- bIntercept = true;
- }
+ bIntercept = true;
}
}
}
if (!bIntercept)
{
+ if (const SfxStringItem* pURLItem = rReq.GetArg<SfxStringItem>(SID_FILE_NAME))
+ {
+ if (!pViewShell || !SfxObjectShell::AllowedLinkProtocolFromDocument(pURLItem->GetValue(),
+ pViewShell->GetObjectShell(),
+ pViewShell->GetFrameWeld()))
+ {
+ return;
+ }
+ }
SfxGetpApp()->ExecuteSlot(rReq, SfxGetpApp()->GetInterface());
}
else
diff --git a/sd/source/ui/docshell/docshel4.cxx b/sd/source/ui/docshell/docshel4.cxx
index aeee4709208a..74c70579bde7 100644
--- a/sd/source/ui/docshell/docshel4.cxx
+++ b/sd/source/ui/docshell/docshel4.cxx
@@ -270,7 +270,7 @@ bool DrawDocShell::Load( SfxMedium& rMedium )
if (IsOwnStorageFormat(rMedium))
{
mpDoc->SetCompatibilityFlag(SdrCompatibilityFlag::AnchoredTextOverflowLegacy, true); // for tdf#99729
- mpDoc->SetCompatibilityFlag(SdrCompatibilityFlag::LegacySingleLineFontwork, true); // for tdf#148000
+ mpDoc->SetCompatibilityFlag(SdrCompatibilityFlag::LegacyFontwork, true); // for tdf#148000
}
bool bRet = false;
diff --git a/sd/source/ui/remotecontrol/Receiver.cxx b/sd/source/ui/remotecontrol/Receiver.cxx
index 48d79e437d44..0846f5bbbe94 100644
--- a/sd/source/ui/remotecontrol/Receiver.cxx
+++ b/sd/source/ui/remotecontrol/Receiver.cxx
@@ -77,6 +77,12 @@ void Receiver::executeCommand( const std::vector<OString> &aCommand )
{
}
+ if (aCommand.empty())
+ {
+ SAL_WARN("sdremote", "Receiver::executeCommand: no command");
+ return;
+ }
+
if ( aCommand[0] == "transition_next" )
{
if ( xSlideShowController.is() )
@@ -89,6 +95,11 @@ void Receiver::executeCommand( const std::vector<OString> &aCommand )
}
else if ( aCommand[0] == "goto_slide" )
{
+ if (aCommand.size() < 2)
+ {
+ SAL_WARN("sdremote", "Receiver::executeCommand: invalid goto_slide");
+ return;
+ }
// FIXME: if 0 returned, then not a valid number
sal_Int32 aSlide = aCommand[1].toInt32();
if ( xSlideShowController.is() &&
@@ -121,6 +132,11 @@ void Receiver::executeCommand( const std::vector<OString> &aCommand )
}
else if (aCommand[0] == "pointer_started" )
{
+ if (aCommand.size() < 3)
+ {
+ SAL_WARN("sdremote", "Receiver::executeCommand: invalid pointer_started");
+ return;
+ }
// std::cerr << "pointer_started" << std::endl;
float x = aCommand[1].toFloat();
float y = aCommand[2].toFloat();
@@ -175,6 +191,11 @@ void Receiver::executeCommand( const std::vector<OString> &aCommand )
}
else if (aCommand[0] == "pointer_coordination" )
{
+ if (aCommand.size() < 3)
+ {
+ SAL_WARN("sdremote", "Receiver::executeCommand: invalid pointer_coordination");
+ return;
+ }
float x = aCommand[1].toFloat();
float y = aCommand[2].toFloat();
diff --git a/sd/source/ui/slideshow/showwin.cxx b/sd/source/ui/slideshow/showwin.cxx
index 8e1f8a6d49cd..dfa04f47a07e 100644
--- a/sd/source/ui/slideshow/showwin.cxx
+++ b/sd/source/ui/slideshow/showwin.cxx
@@ -97,6 +97,12 @@ void ShowWindow::dispose()
void ShowWindow::KeyInput(const KeyEvent& rKEvt)
{
+ // Ignore workaround of https://gitlab.gnome.org/GNOME/gtk/issues/1785
+ // See calls to GtkSalFrame::makeFakeKeyPress (Fixed in GTK 3.24)
+ bool bFakeKeyPress = rKEvt.GetKeyCode().GetFullCode() == 0;
+ if (bFakeKeyPress)
+ return;
+
bool bReturn = false;
if( SHOWWINDOWMODE_PREVIEW == meShowWindowMode )
@@ -126,11 +132,7 @@ void ShowWindow::KeyInput(const KeyEvent& rKEvt)
}
else if( SHOWWINDOWMODE_BLANK == meShowWindowMode )
{
- bool bFakeKeyPress = rKEvt.GetKeyCode().GetFullCode() == 0;
- // Ignore workaround of https://gitlab.gnome.org/GNOME/gtk/issues/1785
- // See calls to GtkSalFrame::makeFakeKeyPress (Fixed in GTK 2.34)
- if (!bFakeKeyPress)
- RestartShow();
+ RestartShow();
bReturn = true;
}
else if( SHOWWINDOWMODE_PAUSE == meShowWindowMode )
diff --git a/sd/uiconfig/simpress/ui/customanimationspanel.ui b/sd/uiconfig/simpress/ui/customanimationspanel.ui
index dda5cda5d1cc..277736f13280 100644
--- a/sd/uiconfig/simpress/ui/customanimationspanel.ui
+++ b/sd/uiconfig/simpress/ui/customanimationspanel.ui
@@ -111,14 +111,18 @@
<object class="GtkTreeSelection"/>
</child>
<child>
- <object class="GtkTreeViewColumn" id="treeviewcolumn2">
- <property name="spacing">6</property>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn1">
<child>
- <object class="GtkCellRendererPixbuf" id="cellrenderertext4"/>
+ <object class="GtkCellRendererPixbuf" id="cellrendererpixbuf1"/>
<attributes>
<attribute name="pixbuf">0</attribute>
</attributes>
</child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn2">
+ <property name="spacing">6</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext2"/>
<attributes>