[Libreoffice-commits] core.git: Branch 'libreoffice-6-1' - sd/inc sd/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Mon Sep 3 14:34:24 UTC 2018
sd/inc/stlpool.hxx | 10 +++----
sd/inc/stlsheet.hxx | 13 +++++++++
sd/source/core/drawdoc.cxx | 2 -
sd/source/core/drawdoc3.cxx | 42 +++++++++++++++++++-------------
sd/source/core/stlpool.cxx | 26 +++++++++----------
sd/source/ui/app/sdxfer.cxx | 2 -
sd/source/ui/func/unmovss.cxx | 23 ++++++++++-------
sd/source/ui/inc/unmovss.hxx | 4 +--
sd/source/ui/sidebar/DocumentHelper.cxx | 2 -
9 files changed, 75 insertions(+), 49 deletions(-)
New commits:
commit b6b6d5c22e52c83af60eba077f0c5098f2198782
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Aug 22 10:08:42 2018 +0100
Commit: Miklos Vajna <vmiklos at collabora.co.uk>
CommitDate: Mon Sep 3 16:34:02 2018 +0200
Resolves: tdf#119259 reused in-use SdStyleSheet removed by undo
since...
commit a4cd841541a729d7b8126d27d91fa28e30b01403
Date: Thu Feb 13 16:10:47 2014 +0530
n#757432: Styles (rename &) copy to different decks.
While copying slides to different slide decks,
styles were not being copied if there is already one
with the same name. This patch renames and copies those
to keep the formatting intact.
if a SdStyleSheet is not freshly created, but reused, it ends up in
the rCreatedSheets list, and so when the copy is undone
(via SdMoveStyleSheetsUndoAction), the SdStyleSheet is unconditionally
remove from the StylePool and so its ref count hits 0 and is removed,
even though there are still objects depending on it.
the problem becames more common since...
bash-4.4$ git show 57db6e24b5ad43d447c30e44a112c74c7e75b46b
commit 57db6e24b5ad43d447c30e44a112c74c7e75b46b
Date: Tue Aug 15 02:51:07 2017 +0530
Removing old SfxItemSet::getHash usage
improves the SfxItemSet comparison.
Assuming that its correct to leave SdStyleSheetPool::CopySheets
with those reused SdStyleSheets in the list, change things so
that a flag is passed around to indicate if the SdStyleSheet
should be removed or not by undo
Change-Id: I82b5bd93183fd1ff9e67957ccfb5babef81fd36d
Reviewed-on: https://gerrit.libreoffice.org/59434
Tested-by: Jenkins
Tested-by: Xisco Faulí <xiscofauli at libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
diff --git a/sd/inc/stlpool.hxx b/sd/inc/stlpool.hxx
index cfe639038f9a..f4cf930d26e3 100644
--- a/sd/inc/stlpool.hxx
+++ b/sd/inc/stlpool.hxx
@@ -70,12 +70,12 @@ public:
SD_DLLPUBLIC void CreateLayoutStyleSheets(const OUString& rLayoutName, bool bCheck = false );
static void CreateLayoutSheetNames(const OUString& rLayoutName, std::vector<OUString> &aNameList);
void CreateLayoutSheetList(const OUString& rLayoutName, SdStyleSheetVector& rLayoutSheets);
- void CopyLayoutSheets(const OUString& rLayoutName, SdStyleSheetPool& rSourcePool, SdStyleSheetVector& rCreatedSheets );
+ void CopyLayoutSheets(const OUString& rLayoutName, SdStyleSheetPool& rSourcePool, StyleSheetCopyResultVector& rCreatedSheets);
void CopyGraphicSheets(SdStyleSheetPool& rSourcePool);
void CopyCellSheets(SdStyleSheetPool& rSourcePool);
void CopyTableStyles(SdStyleSheetPool const & rSourcePool);
- void CopyCellSheets(SdStyleSheetPool& rSourcePool, SdStyleSheetVector& rCreatedSheets);
- void RenameAndCopyGraphicSheets(SdStyleSheetPool& rSourcePool, SdStyleSheetVector& rCreatedSheets, OUString const &rRenameSuffix);
+ void CopyCellSheets(SdStyleSheetPool& rSourcePool, StyleSheetCopyResultVector& rCreatedSheets);
+ void RenameAndCopyGraphicSheets(SdStyleSheetPool& rSourcePool, StyleSheetCopyResultVector& rCreatedSheets, OUString const &rRenameSuffix);
void CreatePseudosIfNecessary();
void UpdateStdNames();
@@ -117,8 +117,8 @@ public:
private:
void CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily );
- void CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily, SdStyleSheetVector& rCreatedSheets );
- void CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily, SdStyleSheetVector& rCreatedSheets, const OUString &rRenameSuffix );
+ void CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily, StyleSheetCopyResultVector& rCreatedSheets );
+ void CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily, StyleSheetCopyResultVector& rCreatedSheets, const OUString &rRenameSuffix );
virtual SfxStyleSheetBase* Create(const OUString& rName, SfxStyleFamily eFamily, SfxStyleSearchBits nMask) override;
diff --git a/sd/inc/stlsheet.hxx b/sd/inc/stlsheet.hxx
index ae21105070a8..e8e0842e00c7 100644
--- a/sd/inc/stlsheet.hxx
+++ b/sd/inc/stlsheet.hxx
@@ -155,6 +155,19 @@ private:
typedef std::vector< rtl::Reference< SdStyleSheet > > SdStyleSheetVector;
+struct StyleSheetCopyResult
+{
+ rtl::Reference<SdStyleSheet> m_xStyleSheet;
+ bool m_bCreatedByCopy;
+ StyleSheetCopyResult(SdStyleSheet* pStyleSheet, bool bCreatedByCopy)
+ : m_xStyleSheet(pStyleSheet)
+ , m_bCreatedByCopy(bCreatedByCopy)
+ {
+ }
+};
+
+typedef std::vector<StyleSheetCopyResult> StyleSheetCopyResultVector;
+
#endif // INCLUDED_SD_INC_STLSHEET_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/core/drawdoc.cxx b/sd/source/core/drawdoc.cxx
index 0c152e067594..00b21c0deba8 100644
--- a/sd/source/core/drawdoc.cxx
+++ b/sd/source/core/drawdoc.cxx
@@ -637,7 +637,7 @@ SdDrawDocument* SdDrawDocument::AllocSdDrawDocument() const
// Move with all of the master page's layouts
OUString aOldLayoutName(const_cast<SdDrawDocument*>(this)->GetMasterSdPage(i, PageKind::Standard)->GetLayoutName());
aOldLayoutName = aOldLayoutName.copy( 0, aOldLayoutName.indexOf( SD_LT_SEPARATOR ) );
- SdStyleSheetVector aCreatedSheets;
+ StyleSheetCopyResultVector aCreatedSheets;
pNewStylePool->CopyLayoutSheets(aOldLayoutName, *pOldStylePool, aCreatedSheets );
}
diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx
index e598dc35e981..631796dde2ae 100644
--- a/sd/source/core/drawdoc3.cxx
+++ b/sd/source/core/drawdoc3.cxx
@@ -336,26 +336,26 @@ namespace
{
void
-lcl_removeUnusedStyles(SfxStyleSheetBasePool* const pStyleSheetPool, SdStyleSheetVector& rStyles)
+lcl_removeUnusedStyles(SfxStyleSheetBasePool* const pStyleSheetPool, StyleSheetCopyResultVector& rStyles)
{
- SdStyleSheetVector aUsedStyles;
+ StyleSheetCopyResultVector aUsedStyles;
aUsedStyles.reserve(rStyles.size());
- for (SdStyleSheetVector::const_iterator aIt(rStyles.begin()), aLast(rStyles.end()); aIt != aLast; ++aIt)
+ for (const auto& a : rStyles)
{
- if ((*aIt)->IsUsed())
- aUsedStyles.push_back(*aIt);
+ if (a.m_xStyleSheet->IsUsed())
+ aUsedStyles.push_back(a);
else
- pStyleSheetPool->Remove((*aIt).get());
+ pStyleSheetPool->Remove(a.m_xStyleSheet.get());
}
rStyles = aUsedStyles;
}
-SfxStyleSheet *lcl_findStyle(SdStyleSheetVector& rStyles, const OUString& aStyleName)
+SfxStyleSheet *lcl_findStyle(StyleSheetCopyResultVector& rStyles, const OUString& aStyleName)
{
- for(SdStyleSheetVector::const_iterator aIt(rStyles.begin()), aLast(rStyles.end()); aIt != aLast; ++aIt)
+ for (const auto& a : rStyles)
{
- if((*aIt)->GetName().startsWith(aStyleName))
- return (*aIt).get();
+ if (a.m_xStyleSheet->GetName().startsWith(aStyleName))
+ return a.m_xStyleSheet.get();
}
return nullptr;
}
@@ -504,7 +504,7 @@ bool SdDrawDocument::InsertBookmarkAsPage(
std::vector<OUString>::const_iterator pIter;
for ( pIter = aLayoutsToTransfer.begin(); pIter != aLayoutsToTransfer.end(); ++pIter )
{
- SdStyleSheetVector aCreatedStyles;
+ StyleSheetCopyResultVector aCreatedStyles;
OUString layoutName = *pIter;
rStyleSheetPool.CopyLayoutSheets(layoutName, rBookmarkStyleSheetPool,aCreatedStyles);
@@ -523,12 +523,12 @@ bool SdDrawDocument::InsertBookmarkAsPage(
// that are not used in any of the inserted pages. The unused styles
// are then removed at the end of the function, where we also create
// undo records for the inserted styles.
- SdStyleSheetVector aNewGraphicStyles;
+ StyleSheetCopyResultVector aNewGraphicStyles;
OUString aRenameStr;
if(!bReplace && !bNoDialogs)
aRenameStr = "_";
rStyleSheetPool.RenameAndCopyGraphicSheets(rBookmarkStyleSheetPool, aNewGraphicStyles, aRenameStr);
- SdStyleSheetVector aNewCellStyles;
+ StyleSheetCopyResultVector aNewCellStyles;
rStyleSheetPool.CopyCellSheets(rBookmarkStyleSheetPool, aNewCellStyles);
// TODO handle undo of table styles too
@@ -1304,8 +1304,12 @@ void SdDrawDocument::RemoveUnnecessaryMasterPages(SdPage* pMasterPage, bool bOnl
if( bUndo )
{
+ StyleSheetCopyResultVector aUndoRemove;
+ aUndoRemove.reserve(aRemove.size());
+ for (const auto& a : aRemove)
+ aUndoRemove.emplace_back(a.get(), true);
// This list belongs to UndoAction
- SdMoveStyleSheetsUndoAction* pMovStyles = new SdMoveStyleSheetsUndoAction( this, aRemove, false );
+ SdMoveStyleSheetsUndoAction* pMovStyles = new SdMoveStyleSheetsUndoAction(this, aUndoRemove, false);
if (pUndoMgr)
pUndoMgr->AddUndoAction(pMovStyles);
@@ -1544,7 +1548,7 @@ void SdDrawDocument::SetMasterPage(sal_uInt16 nSdPageNum,
pSourceStyleSheetPool->SetSearchMask(SfxStyleFamily::Page);
static_cast<SdStyleSheetPool*>( mxStyleSheetPool.get())->SetSearchMask(SfxStyleFamily::Page);
- SdStyleSheetVector aCreatedStyles; // List of created stylesheets
+ StyleSheetCopyResultVector aCreatedStyles; // List of created stylesheets
SfxStyleSheetBase* pHisSheet = pSourceStyleSheetPool->First();
while (pHisSheet)
@@ -1589,7 +1593,7 @@ void SdDrawDocument::SetMasterPage(sal_uInt16 nSdPageNum,
pMySheet->GetItemSet().ClearItem(); // Delete all
pMySheet->GetItemSet().Put(pHisSheet->GetItemSet());
- aCreatedStyles.emplace_back( static_cast< SdStyleSheet* >( pMySheet ) );
+ aCreatedStyles.emplace_back(static_cast<SdStyleSheet*>(pMySheet), true);
}
StyleReplaceData aReplData;
@@ -1801,7 +1805,11 @@ void SdDrawDocument::SetMasterPage(sal_uInt16 nSdPageNum,
if( bUndo )
{
- SdMoveStyleSheetsUndoAction* pMovStyles = new SdMoveStyleSheetsUndoAction(this, aCreatedStyles, true);
+ StyleSheetCopyResultVector aUndoInsert;
+ aUndoInsert.reserve(aCreatedStyles.size());
+ for (const auto& a : aCreatedStyles)
+ aUndoInsert.emplace_back(a.get(), true);
+ SdMoveStyleSheetsUndoAction* pMovStyles = new SdMoveStyleSheetsUndoAction(this, aUndoInsert, true);
pUndoMgr->AddUndoAction(pMovStyles);
}
diff --git a/sd/source/core/stlpool.cxx b/sd/source/core/stlpool.cxx
index 506cdb08a2f4..884c9ffa1e68 100644
--- a/sd/source/core/stlpool.cxx
+++ b/sd/source/core/stlpool.cxx
@@ -90,14 +90,14 @@ OUString lcl_findRenamedStyleName(std::vector< std::pair< OUString, OUString > >
return OUString();
}
-SfxStyleSheet *lcl_findStyle(SdStyleSheetVector& rStyles, const OUString& aStyleName)
+SfxStyleSheet *lcl_findStyle(StyleSheetCopyResultVector& rStyles, const OUString& aStyleName)
{
if( aStyleName.isEmpty() )
return nullptr;
- for(SdStyleSheetVector::const_iterator aIt(rStyles.begin()), aLast(rStyles.end()); aIt != aLast; ++aIt)
+ for (const auto& a : rStyles)
{
- if((*aIt)->GetName() == aStyleName)
- return (*aIt).get();
+ if (a.m_xStyleSheet->GetName() == aStyleName)
+ return a.m_xStyleSheet.get();
}
return nullptr;
}
@@ -586,23 +586,23 @@ void SdStyleSheetPool::CopyTableStyles(SdStyleSheetPool const & rSourcePool)
}
}
-void SdStyleSheetPool::CopyCellSheets(SdStyleSheetPool& rSourcePool, SdStyleSheetVector& rCreatedSheets)
+void SdStyleSheetPool::CopyCellSheets(SdStyleSheetPool& rSourcePool, StyleSheetCopyResultVector& rCreatedSheets)
{
CopySheets( rSourcePool, SfxStyleFamily::Frame, rCreatedSheets );
}
-void SdStyleSheetPool::RenameAndCopyGraphicSheets(SdStyleSheetPool& rSourcePool, SdStyleSheetVector& rCreatedSheets, OUString const &rRenameSuffix)
+void SdStyleSheetPool::RenameAndCopyGraphicSheets(SdStyleSheetPool& rSourcePool, StyleSheetCopyResultVector& rCreatedSheets, OUString const &rRenameSuffix)
{
CopySheets( rSourcePool, SfxStyleFamily::Para, rCreatedSheets, rRenameSuffix );
}
void SdStyleSheetPool::CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily )
{
- SdStyleSheetVector aTmpSheets;
+ StyleSheetCopyResultVector aTmpSheets;
CopySheets(rSourcePool, eFamily, aTmpSheets);
}
-void SdStyleSheetPool::CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily, SdStyleSheetVector& rCreatedSheets)
+void SdStyleSheetPool::CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily, StyleSheetCopyResultVector& rCreatedSheets)
{
CopySheets(rSourcePool, eFamily, rCreatedSheets, "");
}
@@ -624,7 +624,7 @@ struct HasFamilyPredicate : svl::StyleSheetPredicate
}
-void SdStyleSheetPool::CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily, SdStyleSheetVector& rCreatedSheets, const OUString& rRenameSuffix)
+void SdStyleSheetPool::CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily, StyleSheetCopyResultVector& rCreatedSheets, const OUString& rRenameSuffix)
{
std::vector< std::pair< rtl::Reference< SfxStyleSheetBase >, OUString > > aNewStyles;
std::vector< std::pair< OUString, OUString > > aRenamedList;
@@ -689,13 +689,13 @@ void SdStyleSheetPool::CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily
}
xNewSheet->GetItemSet().Put( xSheet->GetItemSet() );
- rCreatedSheets.emplace_back( static_cast< SdStyleSheet* >( xNewSheet.get() ) );
+ rCreatedSheets.emplace_back(static_cast<SdStyleSheet*>(xNewSheet.get()), true);
aRenamedList.emplace_back( xSheet->GetName(), aName );
}
else if (bAddToList)
{
// Add to list - used for renaming
- rCreatedSheets.emplace_back( static_cast< SdStyleSheet* >( pExistingSheet ) );
+ rCreatedSheets.emplace_back(static_cast<SdStyleSheet*>(pExistingSheet), false);
aRenamedList.emplace_back( xSheet->GetName(), aName );
}
}
@@ -731,7 +731,7 @@ void SdStyleSheetPool::CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily
|*
\************************************************************************/
-void SdStyleSheetPool::CopyLayoutSheets(const OUString& rLayoutName, SdStyleSheetPool& rSourcePool, SdStyleSheetVector& rCreatedSheets)
+void SdStyleSheetPool::CopyLayoutSheets(const OUString& rLayoutName, SdStyleSheetPool& rSourcePool, StyleSheetCopyResultVector& rCreatedSheets)
{
SfxStyleSheetBase* pSheet = nullptr;
@@ -752,7 +752,7 @@ void SdStyleSheetPool::CopyLayoutSheets(const OUString& rLayoutName, SdStyleShee
OUString file;
rNewSheet.SetHelpId( file, pSourceSheet->GetHelpId( file ) );
rNewSheet.GetItemSet().Put(pSourceSheet->GetItemSet());
- rCreatedSheets.emplace_back( static_cast< SdStyleSheet* >( &rNewSheet ) );
+ rCreatedSheets.emplace_back(static_cast<SdStyleSheet*>(&rNewSheet), true);
}
}
}
diff --git a/sd/source/ui/app/sdxfer.cxx b/sd/source/ui/app/sdxfer.cxx
index 5db900b412bf..5bb95259fcbe 100644
--- a/sd/source/ui/app/sdxfer.cxx
+++ b/sd/source/ui/app/sdxfer.cxx
@@ -303,7 +303,7 @@ void SdTransferable::CreateData()
sal_Int32 nPos = aOldLayoutName.indexOf( SD_LT_SEPARATOR );
if( nPos != -1 )
aOldLayoutName = aOldLayoutName.copy( 0, nPos );
- SdStyleSheetVector aCreatedSheets;
+ StyleSheetCopyResultVector aCreatedSheets;
pNewStylePool->CopyLayoutSheets( aOldLayoutName, *pOldStylePool, aCreatedSheets );
}
diff --git a/sd/source/ui/func/unmovss.cxx b/sd/source/ui/func/unmovss.cxx
index f035a873e2b9..8805b324a1cc 100644
--- a/sd/source/ui/func/unmovss.cxx
+++ b/sd/source/ui/func/unmovss.cxx
@@ -23,7 +23,7 @@
#include <stlsheet.hxx>
#include <stlpool.hxx>
-SdMoveStyleSheetsUndoAction::SdMoveStyleSheetsUndoAction( SdDrawDocument* pTheDoc, SdStyleSheetVector& rTheStyles, bool bInserted)
+SdMoveStyleSheetsUndoAction::SdMoveStyleSheetsUndoAction( SdDrawDocument* pTheDoc, StyleSheetCopyResultVector& rTheStyles, bool bInserted)
: SdUndoAction(pTheDoc)
, mbMySheets( !bInserted )
{
@@ -32,9 +32,9 @@ SdMoveStyleSheetsUndoAction::SdMoveStyleSheetsUndoAction( SdDrawDocument* pTheDo
maListOfChildLists.resize( maStyles.size() );
// create list with lists of style sheet children
std::size_t i = 0;
- for(SdStyleSheetVector::iterator iter = maStyles.begin(); iter != maStyles.end(); ++iter )
+ for (auto& a : maStyles)
{
- maListOfChildLists[i++] = SdStyleSheetPool::CreateChildList( (*iter).get() );
+ maListOfChildLists[i++] = SdStyleSheetPool::CreateChildList(a.m_xStyleSheet.get());
}
}
@@ -47,28 +47,33 @@ void SdMoveStyleSheetsUndoAction::Undo()
// the styles have to be inserted in the pool
// first insert all styles to the pool
- for(SdStyleSheetVector::iterator iter = maStyles.begin(); iter != maStyles.end(); ++iter )
+ for (auto& a : maStyles)
{
- pPool->Insert((*iter).get());
+ if (!a.m_bCreatedByCopy) // tdf#119259, existed before this action, so leave it alone
+ continue;
+ pPool->Insert(a.m_xStyleSheet.get());
}
// now assign the children again
std::vector< SdStyleSheetVector >::iterator childlistiter( maListOfChildLists.begin() );
- for(SdStyleSheetVector::iterator iter = maStyles.begin(); iter != maStyles.end(); ++iter, ++childlistiter )
+ for (auto& a : maStyles)
{
- OUString aParent((*iter)->GetName());
+ OUString aParent(a.m_xStyleSheet->GetName());
for( SdStyleSheetVector::iterator childiter = (*childlistiter).begin(); childiter != (*childlistiter).end(); ++childiter )
{
(*childiter)->SetParent(aParent);
}
+ ++childlistiter;
}
}
else
{
// remove the styles again from the pool
- for(SdStyleSheetVector::iterator iter = maStyles.begin(); iter != maStyles.end(); ++iter )
+ for (auto& a : maStyles)
{
- pPool->Remove((*iter).get());
+ if (!a.m_bCreatedByCopy) // tdf#119259, existed before this action, so leave it alone
+ continue;
+ pPool->Remove(a.m_xStyleSheet.get());
}
}
mbMySheets = !mbMySheets;
diff --git a/sd/source/ui/inc/unmovss.hxx b/sd/source/ui/inc/unmovss.hxx
index f1f80384c106..474274d0cf57 100644
--- a/sd/source/ui/inc/unmovss.hxx
+++ b/sd/source/ui/inc/unmovss.hxx
@@ -28,12 +28,12 @@ class SdDrawDocument;
class SdMoveStyleSheetsUndoAction : public SdUndoAction
{
- SdStyleSheetVector maStyles;
+ StyleSheetCopyResultVector maStyles;
std::vector< SdStyleSheetVector > maListOfChildLists;
bool mbMySheets;
public:
- SdMoveStyleSheetsUndoAction(SdDrawDocument* pTheDoc, SdStyleSheetVector& rTheStyles, bool bInserted);
+ SdMoveStyleSheetsUndoAction(SdDrawDocument* pTheDoc, StyleSheetCopyResultVector& rTheStyles, bool bInserted);
virtual ~SdMoveStyleSheetsUndoAction() override;
virtual void Undo() override;
diff --git a/sd/source/ui/sidebar/DocumentHelper.cxx b/sd/source/ui/sidebar/DocumentHelper.cxx
index 7198a19217d8..4d3f5d144403 100644
--- a/sd/source/ui/sidebar/DocumentHelper.cxx
+++ b/sd/source/ui/sidebar/DocumentHelper.cxx
@@ -258,7 +258,7 @@ void DocumentHelper::ProvideStyles (
static_cast<SdStyleSheetPool*>(rSourceDocument.GetStyleSheetPool());
SdStyleSheetPool* pTargetStyleSheetPool =
static_cast<SdStyleSheetPool*>(rTargetDocument.GetStyleSheetPool());
- SdStyleSheetVector aCreatedStyles;
+ StyleSheetCopyResultVector aCreatedStyles;
pTargetStyleSheetPool->CopyLayoutSheets (
sLayoutName,
*pSourceStyleSheetPool,
More information about the Libreoffice-commits
mailing list