jsdialog: use single static register
followup for commit 13af671fda1317175a93fd747e5455ce897ed167 jsdialog: share code for widget registry this way we avoid modyfying compilerplugins every time we add new thing we need to remember Change-Id: I6b750175e7dcb31d62666f53c9275a2c5d879150 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178344 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179622 Reviewed-by: Szymon Kłos <szymon.klos@collabora.com> Tested-by: Jenkins
This commit is contained in:
@@ -209,9 +209,7 @@ public:
|
||||
.Class("ScDocument").GlobalNamespace()) // not owning
|
||||
|| name == "s_aLOKWindowsMap" // LOK only, guarded by assert, and LOK never tries to perform a VCL cleanup
|
||||
// vcl/inc/jsdialog/jsdialogbuilder.hxx
|
||||
|| name == "m_aWidgets" // LOK only, similar case as above
|
||||
|| name == "m_aPopups" // LOK only, similar case as above
|
||||
|| name == "m_aMenus" // LOK only, similar case as above
|
||||
|| name == "m_aWidgetRegister" // LOK only, similar case as above
|
||||
//
|
||||
|| name == "gNotebookBarManager" // LOK only case, when notebookbar is closed - VclPtr instance is removed
|
||||
|| name == "gStaticManager" // vcl/source/graphic/Manager.cxx - stores non-owning pointers
|
||||
|
||||
@@ -83,6 +83,14 @@ class JSInstanceBuilder final : public SalInstanceBuilder, public JSDialogSender
|
||||
Menu,
|
||||
};
|
||||
|
||||
struct JSDialogRegister
|
||||
{
|
||||
jsdialog::WidgetRegister<std::shared_ptr<WidgetMap>> aWidgets;
|
||||
jsdialog::WidgetRegister<VclPtr<vcl::Window>> aPopups;
|
||||
jsdialog::WidgetRegister<weld::Menu*> aMenus;
|
||||
};
|
||||
static JSDialogRegister m_aWidgetRegister;
|
||||
|
||||
void initializeDialogSender();
|
||||
void initializePopupSender();
|
||||
void initializeSidebarSender(sal_uInt64 nLOKWindowId, const std::u16string_view& rUIFile);
|
||||
@@ -91,10 +99,6 @@ class JSInstanceBuilder final : public SalInstanceBuilder, public JSDialogSender
|
||||
vcl::Window* pVclParent);
|
||||
void initializeMenuSender(weld::Widget* pParent);
|
||||
|
||||
static jsdialog::WidgetRegister<std::shared_ptr<WidgetMap>> m_aWidgets;
|
||||
static jsdialog::WidgetRegister<VclPtr<vcl::Window>> m_aPopups;
|
||||
static jsdialog::WidgetRegister<weld::Menu*> m_aMenus;
|
||||
|
||||
sal_uInt64 m_nWindowId;
|
||||
/// used in case of tab pages where dialog is not a direct top level
|
||||
VclPtr<vcl::Window> m_aParentDialog;
|
||||
@@ -208,13 +212,19 @@ public:
|
||||
const vcl::ILibreOfficeKitNotifier* pNotifier = nullptr);
|
||||
|
||||
// regular widgets
|
||||
static jsdialog::WidgetRegister<std::shared_ptr<WidgetMap>>& Widgets() { return m_aWidgets; };
|
||||
static jsdialog::WidgetRegister<std::shared_ptr<WidgetMap>>& Widgets()
|
||||
{
|
||||
return m_aWidgetRegister.aWidgets;
|
||||
};
|
||||
|
||||
// we need to remember original popup window to close it properly (its handled by vcl)
|
||||
static jsdialog::WidgetRegister<VclPtr<vcl::Window>>& Popups() { return m_aPopups; }
|
||||
static jsdialog::WidgetRegister<VclPtr<vcl::Window>>& Popups()
|
||||
{
|
||||
return m_aWidgetRegister.aPopups;
|
||||
}
|
||||
|
||||
// menus in separate container as they don't share base class with weld::Widget
|
||||
static jsdialog::WidgetRegister<weld::Menu*>& Menus() { return m_aMenus; }
|
||||
static jsdialog::WidgetRegister<weld::Menu*>& Menus() { return m_aWidgetRegister.aMenus; }
|
||||
|
||||
private:
|
||||
const OUString& GetTypeOfJSON() const;
|
||||
|
||||
@@ -10,9 +10,7 @@
|
||||
#include <jsdialog/jsdialogregister.hxx>
|
||||
#include <jsdialog/jsdialogbuilder.hxx>
|
||||
|
||||
jsdialog::WidgetRegister<std::shared_ptr<WidgetMap>> JSInstanceBuilder::m_aWidgets;
|
||||
jsdialog::WidgetRegister<VclPtr<vcl::Window>> JSInstanceBuilder::m_aPopups;
|
||||
jsdialog::WidgetRegister<weld::Menu*> JSInstanceBuilder::m_aMenus;
|
||||
JSInstanceBuilder::JSDialogRegister JSInstanceBuilder::m_aWidgetRegister;
|
||||
|
||||
OUString JSInstanceBuilder::getMapIdFromWindowId() const
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user