cui/source/options/optcolor.cxx               |    2 ++
 dbaccess/source/ui/dlg/indexfieldscontrol.cxx |    2 ++
 include/vcl/NotebookBarAddonsMerger.hxx       |    9 ++++-----
 include/vcl/builder.hxx                       |    7 ++++---
 include/vcl/builderfactory.hxx                |    6 ++++++
 sfx2/source/appl/newhelp.cxx                  |   10 ++++++++++
 sfx2/source/sidebar/SidebarToolBox.cxx        |    4 ++++
 svtools/source/contnr/fileview.cxx            |    2 ++
 svtools/source/control/ctrlbox.cxx            |    6 ++++++
 svtools/source/control/inettbc.cxx            |    2 ++
 svx/source/dialog/langbox.cxx                 |    4 ++++
 svx/source/dialog/relfld.cxx                  |    2 ++
 svx/source/dialog/txencbox.cxx                |    2 ++
 sw/source/uibase/utlui/numfmtlb.cxx           |    2 ++
 vcl/source/control/notebookbar.cxx            |    2 +-
 vcl/source/window/NotebookBarAddonsMerger.cxx |    4 ++--
 vcl/source/window/builder.cxx                 |   12 +++++++-----
 vcl/source/window/printdlg.cxx                |    4 ++++
 18 files changed, 66 insertions(+), 16 deletions(-)

New commits:
commit e44db461ca135fcbef7854c7304c894b65fcd497
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Tue Sep 3 12:54:48 2019 +0300
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Sep 3 22:24:23 2019 +0200

    Ensure that VCL builder entry points use proper function type
    
    This removes duplicating typedefs from NotebookBarAddonsMerger,
    and removes dependency of include/vcl/builder.hxx on
    include/vcl/NotebookBarAddonsMerger.hxx.
    
    Change-Id: Ica5787c934d1b8ce21623f28ce155337637fdf54
    Reviewed-on: https://gerrit.libreoffice.org/78549
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/cui/source/options/optcolor.cxx b/cui/source/options/optcolor.cxx
index 7cf455e821fd..d85381cc70a5 100644
--- a/cui/source/options/optcolor.cxx
+++ b/cui/source/options/optcolor.cxx
@@ -861,6 +861,8 @@ void ColorConfigCtrl_Impl::dispose()
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeColorConfigCtrl(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap &)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeColorConfigCtrl)>);
     rRet = VclPtr<ColorConfigCtrl_Impl>::Create(pParent);
 }
 
diff --git a/dbaccess/source/ui/dlg/indexfieldscontrol.cxx 
b/dbaccess/source/ui/dlg/indexfieldscontrol.cxx
index cfc8143a2288..dc3296a7187a 100644
--- a/dbaccess/source/ui/dlg/indexfieldscontrol.cxx
+++ b/dbaccess/source/ui/dlg/indexfieldscontrol.cxx
@@ -81,6 +81,8 @@ static constexpr auto BROWSER_STANDARD_FLAGS = 
BrowserMode::COLUMNSELECTION | Br
 
     extern "C" SAL_DLLPUBLIC_EXPORT void 
makeDbaIndexFieldsControl(VclPtr<vcl::Window> & rRet, const VclPtr<vcl::Window> 
& pParent, VclBuilder::stringmap &)
     {
+        
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                     decltype(makeDbaIndexFieldsControl)>);
         rRet = VclPtr<IndexFieldsControl>::Create(pParent, WB_BORDER | 
WB_NOTABSTOP);
     }
 
diff --git a/include/vcl/NotebookBarAddonsMerger.hxx 
b/include/vcl/NotebookBarAddonsMerger.hxx
index 913e50734472..9b13ff145625 100644
--- a/include/vcl/NotebookBarAddonsMerger.hxx
+++ b/include/vcl/NotebookBarAddonsMerger.hxx
@@ -20,6 +20,7 @@
 #ifndef INCLUDED_VCL_NOTEBOOKBARADDONSMERGER_HXX
 #define INCLUDED_VCL_NOTEBOOKBARADDONSMERGER_HXX
 
+#include <vcl/builder.hxx>
 #include <vcl/window.hxx>
 #include <vcl/image.hxx>
 #include <vcl/menu.hxx>
@@ -60,15 +61,13 @@ struct AddonNotebookBarItem
 class NotebookBarAddonsMerger
 {
 public:
-    typedef std::map<OString, OUString> stringmap;
-    typedef void (*customMakeWidget)(VclPtr<vcl::Window>& rRet, const 
VclPtr<vcl::Window>& pParent,
-                                     stringmap& rVec);
     NotebookBarAddonsMerger();
     ~NotebookBarAddonsMerger();
-    static void MergeNotebookBarAddons(vcl::Window* pParent, const 
customMakeWidget& pFunction,
+    static void MergeNotebookBarAddons(vcl::Window* pParent,
+                                       const VclBuilder::customMakeWidget& 
pFunction,
                                        const 
css::uno::Reference<css::frame::XFrame>& rFrame,
                                        const NotebookBarAddonsItem& 
aNotebookBarAddonsItem,
-                                       stringmap rVec);
+                                       VclBuilder::stringmap& rVec);
     static void MergeNotebookBarMenuAddons(PopupMenu* pPopupMenu, sal_Int16 
nItemId,
                                            const OString& sItemIdName,
                                            NotebookBarAddonsItem& 
aNotebookBarAddonsItem);
diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx
index 4cdd10930dea..35504dc0d701 100644
--- a/include/vcl/builder.hxx
+++ b/include/vcl/builder.hxx
@@ -15,7 +15,6 @@
 #include <unotools/resmgr.hxx>
 #include <tools/fldunit.hxx>
 #include <vcl/dllapi.h>
-#include <vcl/NotebookBarAddonsMerger.hxx>
 #include <vcl/window.hxx>
 #include <vcl/vclptr.hxx>
 #include <tools/wintypes.hxx>
@@ -45,6 +44,7 @@ class DateField;
 class TimeField;
 class VclExpander;
 class VclMultiLineEdit;
+struct NotebookBarAddonsItem;
 namespace xmlreader { class XmlReader; }
 namespace com { namespace sun { namespace star { namespace frame { class 
XFrame; } } } }
 
@@ -73,11 +73,10 @@ public:
                const css::uno::Reference<css::frame::XFrame>& rFrame
                = css::uno::Reference<css::frame::XFrame>(),
                bool bLegacy = true,
-               const NotebookBarAddonsItem& aNotebookBarAddonsItem = 
NotebookBarAddonsItem());
+               const NotebookBarAddonsItem* pNotebookBarAddonsItem = nullptr);
     ~VclBuilder();
     ///releases references and disposes all children.
     void disposeBuilder();
-    NotebookBarAddonsItem m_pNotebookBarAddonsItem;
     //sID must exist and be of type T
     template <typename T> T* get(VclPtr<T>& ret, const OString& sID);
 
@@ -121,6 +120,8 @@ private:
     //Show or Execute
     stringmap      m_aDeferredProperties;
 
+    std::unique_ptr<NotebookBarAddonsItem> m_pNotebookBarAddonsItem;
+
     struct PackingData
     {
         bool m_bVerticalOrient;
diff --git a/include/vcl/builderfactory.hxx b/include/vcl/builderfactory.hxx
index 719f1d8b206c..c6b1b0ccf870 100644
--- a/include/vcl/builderfactory.hxx
+++ b/include/vcl/builderfactory.hxx
@@ -16,6 +16,8 @@
 #define VCL_BUILDER_FACTORY(typeName) \
     extern "C" SAL_DLLPUBLIC_EXPORT void make##typeName(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap) \
     { \
+        
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
          \
+                                     decltype(make##typeName)>);               
                    \
         (void)rMap; \
         rRet = VclPtr<typeName>::Create(pParent); \
     }
@@ -23,6 +25,8 @@
 #define VCL_BUILDER_FACTORY_ARGS(typeName,arg1) \
     extern "C" SAL_DLLPUBLIC_EXPORT void make##typeName(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap) \
     { \
+        
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
          \
+                                     decltype(make##typeName)>);               
                    \
         (void)rMap; \
         rRet = VclPtr<typeName>::Create(pParent,arg1); \
     }
@@ -30,6 +34,8 @@
 #define VCL_BUILDER_FACTORY_CONSTRUCTOR(typeName,arg2) \
     extern "C" SAL_DLLPUBLIC_EXPORT void make##typeName(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap) \
     { \
+        
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
          \
+                                     decltype(make##typeName)>);               
                    \
         OUString sBorder = BuilderUtils::extractCustomProperty(rMap); \
         WinBits wb = arg2; \
         if (!sBorder.isEmpty()) \
diff --git a/sfx2/source/appl/newhelp.cxx b/sfx2/source/appl/newhelp.cxx
index 6a77c164a1b0..c34308afb72d 100644
--- a/sfx2/source/appl/newhelp.cxx
+++ b/sfx2/source/appl/newhelp.cxx
@@ -287,6 +287,8 @@ ContentListBox_Impl::ContentListBox_Impl(vcl::Window* 
pParent, WinBits nStyle)
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeContentListBox(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeContentListBox)>);
     WinBits nWinStyle = WB_TABSTOP;
     OUString sBorder = BuilderUtils::extractCustomProperty(rMap);
     if (!sBorder.isEmpty())
@@ -472,6 +474,8 @@ IndexBox_Impl::IndexBox_Impl(vcl::Window* pParent, WinBits 
nStyle)
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeIndexBox(VclPtr<vcl::Window> & rRet, 
const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeIndexBox)>);
     WinBits nWinBits = WB_CLIPCHILDREN|WB_LEFT|WB_VCENTER|WB_3DLOOK;
     OUString sBorder = BuilderUtils::extractCustomProperty(rMap);
     if (!sBorder.isEmpty())
@@ -848,6 +852,8 @@ void IndexTabPage_Impl::OpenKeyword()
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeSearchBox(VclPtr<vcl::Window> & rRet, 
const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap &)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeSearchBox)>);
     WinBits nWinBits = 
WB_CLIPCHILDREN|WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_SIMPLEMODE|WB_DROPDOWN;
     VclPtrInstance<SearchBox_Impl> pComboBox(pParent, nWinBits);
     pComboBox->EnableAutoSize(true);
@@ -879,6 +885,8 @@ void SearchBox_Impl::Select()
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeSearchResultsBox(VclPtr<vcl::Window> 
& rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeSearchResultsBox)>);
     WinBits nWinBits = WB_CLIPCHILDREN|WB_LEFT|WB_VCENTER|WB_3DLOOK;
     OUString sBorder = BuilderUtils::extractCustomProperty(rMap);
     if (!sBorder.isEmpty())
@@ -1137,6 +1145,8 @@ BookmarksBox_Impl::BookmarksBox_Impl(vcl::Window* 
pParent, WinBits nStyle)
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeBookmarksBox(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeBookmarksBox)>);
     WinBits nWinBits = 
WB_CLIPCHILDREN|WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_SIMPLEMODE;
     OUString sBorder = BuilderUtils::extractCustomProperty(rMap);
     if (!sBorder.isEmpty())
diff --git a/sfx2/source/sidebar/SidebarToolBox.cxx 
b/sfx2/source/sidebar/SidebarToolBox.cxx
index c3f7ea376782..2aead2974987 100644
--- a/sfx2/source/sidebar/SidebarToolBox.cxx
+++ b/sfx2/source/sidebar/SidebarToolBox.cxx
@@ -333,6 +333,8 @@ public:
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeSidebarToolBox(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeSidebarToolBox)>);
     VclPtrInstance<SidebarToolBox> pBox(pParent);
     pBox->InitToolBox(rMap);
     rRet = pBox;
@@ -340,6 +342,8 @@ extern "C" SAL_DLLPUBLIC_EXPORT void 
makeSidebarToolBox(VclPtr<vcl::Window> & rR
 
 extern "C" SAL_DLLPUBLIC_EXPORT void 
makeNotebookbarToolBox(VclPtr<vcl::Window> & rRet, const VclPtr<vcl::Window> & 
pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeNotebookbarToolBox)>);
     VclPtrInstance<NotebookbarToolBox> pBox(pParent);
     pBox->InitToolBox(rMap);
     rRet = pBox;
diff --git a/svtools/source/contnr/fileview.cxx 
b/svtools/source/contnr/fileview.cxx
index 23a32c0590b9..4c979935d108 100644
--- a/svtools/source/contnr/fileview.cxx
+++ b/svtools/source/contnr/fileview.cxx
@@ -881,6 +881,8 @@ void SvtFileView::dispose()
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeSvtFileView(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeSvtFileView)>);
     WinBits nBits = WB_CLIPCHILDREN|WB_LEFT|WB_VCENTER|WB_3DLOOK;
 
     bool bDropdown = BuilderUtils::extractDropdown(rMap);
diff --git a/svtools/source/control/ctrlbox.cxx 
b/svtools/source/control/ctrlbox.cxx
index d731cacf8cf3..860186e80a3a 100644
--- a/svtools/source/control/ctrlbox.cxx
+++ b/svtools/source/control/ctrlbox.cxx
@@ -341,6 +341,8 @@ FontNameBox::FontNameBox( vcl::Window* pParent, WinBits 
nWinStyle ) :
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeFontNameBox(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeFontNameBox)>);
     bool bDropdown = BuilderUtils::extractDropdown(rMap);
     WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP;
     if (bDropdown)
@@ -727,6 +729,8 @@ Size FontStyleBox::GetOptimalSize() const
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeFontStyleBox(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeFontStyleBox)>);
     bool bDropdown = BuilderUtils::extractDropdown(rMap);
     WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP;
     if (bDropdown)
@@ -927,6 +931,8 @@ FontSizeBox::FontSizeBox( vcl::Window* pParent, WinBits 
nWinSize ) :
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeFontSizeBox(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeFontSizeBox)>);
     bool bDropdown = BuilderUtils::extractDropdown(rMap);
     WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP;
     if (bDropdown)
diff --git a/svtools/source/control/inettbc.cxx 
b/svtools/source/control/inettbc.cxx
index e40b8f703fe1..9d3c130f8880 100644
--- a/svtools/source/control/inettbc.cxx
+++ b/svtools/source/control/inettbc.cxx
@@ -1414,6 +1414,8 @@ SvtURLBox::SvtURLBox( vcl::Window* pParent, WinBits 
_nStyle, INetProtocol eSmart
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeSvtURLBox(VclPtr<vcl::Window> & rRet, 
const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap &)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeSvtURLBox)>);
     WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP|
                        WB_DROPDOWN|WB_AUTOHSCROLL;
     VclPtrInstance<SvtURLBox> pListBox(pParent, nWinBits, 
INetProtocol::NotValid, false);
diff --git a/svx/source/dialog/langbox.cxx b/svx/source/dialog/langbox.cxx
index a51290c0df9b..b30d234aed4a 100644
--- a/svx/source/dialog/langbox.cxx
+++ b/svx/source/dialog/langbox.cxx
@@ -95,6 +95,8 @@ static bool lcl_SeqHasLang( const Sequence< sal_Int16 > & 
rLangSeq, sal_Int16 nL
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeSvxLanguageBox(VclPtr<vcl::Window> & 
rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeSvxLanguageBox)>);
     WinBits nBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP;
     bool bDropdown = BuilderUtils::extractDropdown(rMap);
     if (bDropdown)
@@ -108,6 +110,8 @@ extern "C" SAL_DLLPUBLIC_EXPORT void 
makeSvxLanguageBox(VclPtr<vcl::Window> & rR
 
 extern "C" SAL_DLLPUBLIC_EXPORT void 
makeSvxLanguageComboBox(VclPtr<vcl::Window> & rRet, const VclPtr<vcl::Window> & 
pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeSvxLanguageComboBox)>);
     WinBits nBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP;
     bool bDropdown = BuilderUtils::extractDropdown(rMap);
     if (bDropdown)
diff --git a/svx/source/dialog/relfld.cxx b/svx/source/dialog/relfld.cxx
index fc2c7a4df643..47642e3ec716 100644
--- a/svx/source/dialog/relfld.cxx
+++ b/svx/source/dialog/relfld.cxx
@@ -32,6 +32,8 @@ SvxRelativeField::SvxRelativeField(
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeSvxRelativeField(VclPtr<vcl::Window> 
& rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeSvxRelativeField)>);
     OUString const custom(BuilderUtils::extractCustomProperty(rMap));
     FieldUnit const eUnit(BuilderUtils::detectUnit(custom));
     rRet = VclPtr<SvxRelativeField>::Create(pParent,
diff --git a/svx/source/dialog/txencbox.cxx b/svx/source/dialog/txencbox.cxx
index 0eec2058e451..68a6aaea3313 100644
--- a/svx/source/dialog/txencbox.cxx
+++ b/svx/source/dialog/txencbox.cxx
@@ -43,6 +43,8 @@ SvxTextEncodingBox::SvxTextEncodingBox( vcl::Window* pParent, 
WinBits nBits )
 
 extern "C" SAL_DLLPUBLIC_EXPORT void 
makeSvxTextEncodingBox(VclPtr<vcl::Window> & rRet, const VclPtr<vcl::Window> & 
pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeSvxTextEncodingBox)>);
     WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_SIMPLEMODE;
     bool bDropdown = BuilderUtils::extractDropdown(rMap);
     if (bDropdown)
diff --git a/sw/source/uibase/utlui/numfmtlb.cxx 
b/sw/source/uibase/utlui/numfmtlb.cxx
index 703e78a87674..078a85278181 100644
--- a/sw/source/uibase/utlui/numfmtlb.cxx
+++ b/sw/source/uibase/utlui/numfmtlb.cxx
@@ -63,6 +63,8 @@ NumFormatListBox::NumFormatListBox(vcl::Window* pWin, WinBits 
nStyle) :
 
 extern "C" SAL_DLLPUBLIC_EXPORT void makeNumFormatListBox(VclPtr<vcl::Window> 
& rRet, const VclPtr<vcl::Window> & pParent, VclBuilder::stringmap & rMap)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeNumFormatListBox)>);
     WinBits nBits = WB_LEFT|WB_VCENTER|WB_3DLOOK;
 
     bool bDropdown = BuilderUtils::extractDropdown(rMap);
diff --git a/vcl/source/control/notebookbar.cxx 
b/vcl/source/control/notebookbar.cxx
index 8fefed9c5841..b178962f5d11 100644
--- a/vcl/source/control/notebookbar.cxx
+++ b/vcl/source/control/notebookbar.cxx
@@ -62,7 +62,7 @@ NotebookBar::NotebookBar(Window* pParent, const OString& rID, 
const OUString& rU
     if ( doesCustomizedUIExist )
         sUIDir = getCustomizedUIRootDir();
     m_pUIBuilder.reset(
-        new VclBuilder(this, sUIDir, rUIXMLDescription, rID, rFrame, true, 
aNotebookBarAddonsItem));
+        new VclBuilder(this, sUIDir, rUIXMLDescription, rID, rFrame, true, 
&aNotebookBarAddonsItem));
     mxFrame = rFrame;
     // In the Notebookbar's .ui file must exist control handling context
     // - implementing NotebookbarContextControl interface with id 
"ContextContainer"
diff --git a/vcl/source/window/NotebookBarAddonsMerger.cxx 
b/vcl/source/window/NotebookBarAddonsMerger.cxx
index f9f4c70343fa..01c8bbd0977e 100644
--- a/vcl/source/window/NotebookBarAddonsMerger.cxx
+++ b/vcl/source/window/NotebookBarAddonsMerger.cxx
@@ -110,9 +110,9 @@ NotebookBarAddonsMerger::NotebookBarAddonsMerger() {}
 NotebookBarAddonsMerger::~NotebookBarAddonsMerger() {}
 
 void NotebookBarAddonsMerger::MergeNotebookBarAddons(
-    vcl::Window* pParent, const customMakeWidget& pFunction,
+    vcl::Window* pParent, const VclBuilder::customMakeWidget& pFunction,
     const css::uno::Reference<css::frame::XFrame>& m_xFrame,
-    const NotebookBarAddonsItem& aNotebookBarAddonsItem, 
NotebookBarAddonsMerger::stringmap rMap)
+    const NotebookBarAddonsItem& aNotebookBarAddonsItem, 
VclBuilder::stringmap& rMap)
 {
     std::vector<Image> aImageVec = aNotebookBarAddonsItem.aImageValues;
     unsigned long nIter = 0;
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index c83f6339d432..be9b46984300 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -408,8 +408,11 @@ namespace weld
 
 VclBuilder::VclBuilder(vcl::Window* pParent, const OUString& sUIDir, const 
OUString& sUIFile,
                        const OString& sID, const 
css::uno::Reference<css::frame::XFrame>& rFrame,
-                       bool bLegacy, const NotebookBarAddonsItem& 
aNotebookBarAddonsItem)
-    : m_sID(sID)
+                       bool bLegacy, const NotebookBarAddonsItem* 
pNotebookBarAddonsItem)
+    : m_pNotebookBarAddonsItem(pNotebookBarAddonsItem
+                                   ? new 
NotebookBarAddonsItem(*pNotebookBarAddonsItem)
+                                   : new NotebookBarAddonsItem{})
+    , m_sID(sID)
     , m_sHelpRoot(OUStringToOString(sUIFile, RTL_TEXTENCODING_UTF8))
     , m_pStringReplace(Translate::GetReadStringHook())
     , m_pParent(pParent)
@@ -418,7 +421,6 @@ VclBuilder::VclBuilder(vcl::Window* pParent, const 
OUString& sUIDir, const OUStr
     , m_pParserState(new ParserState)
     , m_xFrame(rFrame)
 {
-    m_pNotebookBarAddonsItem = aNotebookBarAddonsItem;
     m_bToplevelHasDeferredInit = pParent &&
         ((pParent->IsSystemWindow() && 
static_cast<SystemWindow*>(pParent)->isDeferredInit()) ||
          (pParent->IsDockingWindow() && 
static_cast<DockingWindow*>(pParent)->isDeferredInit()));
@@ -2239,7 +2241,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window 
*pParent, const OString &
     {
         customMakeWidget pFunction = 
GetCustomMakeWidget("sfxlo-NotebookbarToolBox");
         if(pFunction != nullptr)
-            NotebookBarAddonsMerger::MergeNotebookBarAddons(pParent, 
pFunction, m_xFrame, m_pNotebookBarAddonsItem, rMap);
+            NotebookBarAddonsMerger::MergeNotebookBarAddons(pParent, 
pFunction, m_xFrame, *m_pNotebookBarAddonsItem, rMap);
         return nullptr;
     }
     else if (name == "GtkToolButton" || name == "GtkMenuToolButton" ||
@@ -3539,7 +3541,7 @@ void VclBuilder::insertMenuObject(PopupMenu *pParent, 
PopupMenu *pSubMenu, const
 
     if(rClass == "NotebookBarAddonsMenuMergePoint")
     {
-        NotebookBarAddonsMerger::MergeNotebookBarMenuAddons(pParent, nNewId, 
rID, m_pNotebookBarAddonsItem);
+        NotebookBarAddonsMerger::MergeNotebookBarMenuAddons(pParent, nNewId, 
rID, *m_pNotebookBarAddonsItem);
         m_pParserState->m_nLastMenuItemId = pParent->GetItemCount();
     }
     else if (rClass == "GtkMenuItem")
diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
index 0efcbab73225..0fa17941e317 100644
--- a/vcl/source/window/printdlg.cxx
+++ b/vcl/source/window/printdlg.cxx
@@ -59,11 +59,15 @@ enum
 
 extern "C" SAL_DLLPUBLIC_EXPORT void 
makePrintPreviewWindow(VclPtr<vcl::Window> & rRet, const VclPtr<vcl::Window> & 
pParent, VclBuilder::stringmap &)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makePrintPreviewWindow)>);
     rRet = VclPtr<PrintDialog::PrintPreviewWindow>::Create(pParent);
 }
 
 extern "C" SAL_DLLPUBLIC_EXPORT void 
makeShowNupOrderWindow(VclPtr<vcl::Window> & rRet, const VclPtr<vcl::Window> & 
pParent, VclBuilder::stringmap &)
 {
+    
static_assert(std::is_same_v<std::remove_pointer_t<VclBuilder::customMakeWidget>,
+                                 decltype(makeShowNupOrderWindow)>);
     rRet = VclPtr<PrintDialog::ShowNupOrderWindow>::Create(pParent);
 }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to