diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2019-09-03 12:54:48 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2019-09-03 22:24:23 +0200 |
commit | e44db461ca135fcbef7854c7304c894b65fcd497 (patch) | |
tree | bf24b37c2abdbddcde0eaee322d09c61c93569e7 /include/vcl | |
parent | 446f4b086ccd4cdb9524637e4808dbe6b7d40f7e (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/vcl')
-rw-r--r-- | include/vcl/NotebookBarAddonsMerger.hxx | 9 | ||||
-rw-r--r-- | include/vcl/builder.hxx | 7 | ||||
-rw-r--r-- | include/vcl/builderfactory.hxx | 6 |
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()) \ |