summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2019-09-03 12:54:48 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2019-09-03 22:24:23 +0200
commite44db461ca135fcbef7854c7304c894b65fcd497 (patch)
treebf24b37c2abdbddcde0eaee322d09c61c93569e7 /include
parent446f4b086ccd4cdb9524637e4808dbe6b7d40f7e (diff)
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.kaganski@collabora.com>
Diffstat (limited to 'include')
-rw-r--r--include/vcl/NotebookBarAddonsMerger.hxx9
-rw-r--r--include/vcl/builder.hxx7
-rw-r--r--include/vcl/builderfactory.hxx6
3 files changed, 14 insertions, 8 deletions
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()) \