vcl/inc/jsdialog/jsdialogbuilder.hxx |   21 +-
 vcl/inc/salvtables.hxx               |   42 +++++
 vcl/jsdialog/jsdialogbuilder.cxx     |   68 +++++++-
 vcl/source/app/salvtables.cxx        |  292 ++++++++++++++++-------------------
 4 files changed, 257 insertions(+), 166 deletions(-)

New commits:
commit 04aad5692dd17444f23895bc03784701657c3346
Author:     Szymon Kłos <[email protected]>
AuthorDate: Wed Mar 1 18:11:44 2023 +0100
Commit:     Szymon Kłos <[email protected]>
CommitDate: Tue Mar 7 09:10:15 2023 +0000

    jsdialog: add wrapper for weld:Assistant
    
    Signed-off-by: Szymon Kłos <[email protected]>
    Change-Id: I82d045cbcc7fc4682c251ac51b19b3bd33f813f8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148068

diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx 
b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index c99b3c19f4f0..97bab23c809a 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -278,6 +278,7 @@ public:
     virtual ~JSInstanceBuilder() override;
     virtual std::unique_ptr<weld::MessageDialog> weld_message_dialog(const 
OString& id) override;
     virtual std::unique_ptr<weld::Dialog> weld_dialog(const OString& id) 
override;
+    virtual std::unique_ptr<weld::Assistant> weld_assistant(const OString& id) 
override;
     virtual std::unique_ptr<weld::Container> weld_container(const OString& id) 
override;
     virtual std::unique_ptr<weld::Label> weld_label(const OString& id) 
override;
     virtual std::unique_ptr<weld::Button> weld_button(const OString& id) 
override;
@@ -303,11 +304,10 @@ public:
     virtual std::unique_ptr<weld::Widget> weld_widget(const OString& id) 
override;
     virtual std::unique_ptr<weld::Image> weld_image(const OString& id) 
override;
 
-    static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent,
-                                                    VclMessageType 
eMessageType,
-                                                    VclButtonsType eButtonType,
-                                                    const OUString& 
rPrimaryMessage,
-                                                    const 
vcl::ILibreOfficeKitNotifier* pNotifier = nullptr);
+    static weld::MessageDialog*
+    CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType,
+                        VclButtonsType eButtonType, const OUString& 
rPrimaryMessage,
+                        const vcl::ILibreOfficeKitNotifier* pNotifier = 
nullptr);
 
     static void AddChildWidget(const std::string& nWindowId, const OString& id,
                                weld::Widget* pWidget);
@@ -482,6 +482,17 @@ public:
     virtual void response(int response) override;
 };
 
+class JSAssistant final : public JSWidget<SalInstanceAssistant, 
vcl::RoadmapWizard>
+{
+public:
+    JSAssistant(JSDialogSender* pSender, vcl::RoadmapWizard* pDialog, 
SalInstanceBuilder* pBuilder,
+                bool bTakeOwnership);
+
+    virtual void set_current_page(int nPage) override;
+    virtual void set_current_page(const OString& rIdent) override;
+    virtual void response(int response) override;
+};
+
 class JSContainer final : public JSWidget<SalInstanceContainer, vcl::Window>
 {
 public:
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index abb53f8c6a05..ff562358abdc 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -26,6 +26,7 @@
 #include <vcl/toolkit/treelistentry.hxx>
 #include <vcl/jsdialog/executor.hxx>
 #include <cppuhelper/supportsservice.hxx>
+#include <wizdlg.hxx>
 
 static std::map<std::string, vcl::Window*>& GetLOKPopupsMap()
 {
@@ -843,6 +844,34 @@ std::unique_ptr<weld::Dialog> 
JSInstanceBuilder::weld_dialog(const OString& id)
     return pRet;
 }
 
+std::unique_ptr<weld::Assistant> JSInstanceBuilder::weld_assistant(const 
OString& id)
+{
+    vcl::RoadmapWizard* pDialog = m_xBuilder->get<vcl::RoadmapWizard>(id);
+    std::unique_ptr<JSAssistant> pRet(pDialog ? new JSAssistant(this, pDialog, 
this, false)
+                                              : nullptr);
+    if (pDialog)
+    {
+        m_nWindowId = pDialog->GetLOKWindowId();
+        pDialog->SetLOKTunnelingState(false);
+
+        InsertWindowToMap(getMapIdFromWindowId());
+
+        assert(!m_aOwnedToplevel && "only one toplevel per .ui allowed");
+        m_aOwnedToplevel.set(pDialog);
+        m_xBuilder->drop_ownership(pDialog);
+        m_bHasTopLevelDialog = true;
+
+        pRet.reset(new JSAssistant(this, pDialog, this, false));
+
+        RememberWidget("__DIALOG__", pRet.get());
+
+        initializeSender(GetNotifierWindow(), GetContentWindow(), 
GetTypeOfJSON());
+        sendFullUpdate();
+    }
+
+    return pRet;
+}
+
 std::unique_ptr<weld::MessageDialog> 
JSInstanceBuilder::weld_message_dialog(const OString& id)
 {
     std::unique_ptr<weld::MessageDialog> pRet;
@@ -1153,11 +1182,10 @@ std::unique_ptr<weld::Image> 
JSInstanceBuilder::weld_image(const OString& id)
     return pWeldWidget;
 }
 
-weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* 
pParent,
-                                                            VclMessageType 
eMessageType,
-                                                            VclButtonsType 
eButtonType,
-                                                            const OUString& 
rPrimaryMessage,
-                                                            const 
vcl::ILibreOfficeKitNotifier* pNotifier)
+weld::MessageDialog*
+JSInstanceBuilder::CreateMessageDialog(weld::Widget* pParent, VclMessageType 
eMessageType,
+                                       VclButtonsType eButtonType, const 
OUString& rPrimaryMessage,
+                                       const vcl::ILibreOfficeKitNotifier* 
pNotifier)
 {
     SalInstanceWidget* pParentInstance = 
dynamic_cast<SalInstanceWidget*>(pParent);
     SystemWindow* pParentWidget = pParentInstance ? 
pParentInstance->getSystemWindow() : nullptr;
@@ -1219,6 +1247,36 @@ void JSDialog::response(int response)
     SalInstanceDialog::response(response);
 }
 
+void JSAssistant::response(int response)
+{
+    if (response == RET_HELP)
+    {
+        response_help(m_xWidget.get());
+        return;
+    }
+
+    sendClose();
+    SalInstanceAssistant::response(response);
+}
+
+JSAssistant::JSAssistant(JSDialogSender* pSender, vcl::RoadmapWizard* pDialog,
+                         SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+    : JSWidget<SalInstanceAssistant, vcl::RoadmapWizard>(pSender, pDialog, 
pBuilder, bTakeOwnership)
+{
+}
+
+void JSAssistant::set_current_page(int nPage)
+{
+    SalInstanceAssistant::set_current_page(nPage);
+    sendFullUpdate();
+}
+
+void JSAssistant::set_current_page(const OString& rIdent)
+{
+    SalInstanceAssistant::set_current_page(rIdent);
+    sendFullUpdate();
+}
+
 JSContainer::JSContainer(JSDialogSender* pSender, vcl::Window* pContainer,
                          SalInstanceBuilder* pBuilder, bool bTakeOwnership)
     : JSWidget<SalInstanceContainer, vcl::Window>(pSender, pContainer, 
pBuilder, bTakeOwnership)
commit 7974cef3b4a590133fee4d95b7744b73f4aa174f
Author:     Szymon Kłos <[email protected]>
AuthorDate: Wed Mar 1 16:51:02 2023 +0100
Commit:     Szymon Kłos <[email protected]>
CommitDate: Tue Mar 7 09:10:01 2023 +0000

    Move SalInstanceAssistant declaration to header file
    
    Change-Id: I3407893c878fd37fe0968c2990c92d5d16213ed3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148067
    Tested-by: Szymon Kłos <[email protected]>
    Reviewed-by: Szymon Kłos <[email protected]>

diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 36416deb5910..f0f79d1f58eb 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -30,6 +30,11 @@
 #include "listbox.hxx"
 #include "messagedialog.hxx"
 
+namespace vcl
+{
+class RoadmapWizard;
+};
+
 class SalInstanceBuilder : public weld::Builder
 {
 protected:
@@ -543,6 +548,43 @@ public:
     virtual weld::Container* weld_content_area() override;
 };
 
+class SalInstanceAssistant : public SalInstanceDialog, public virtual 
weld::Assistant
+{
+private:
+    VclPtr<vcl::RoadmapWizard> m_xWizard;
+    std::vector<std::unique_ptr<SalInstanceContainer>> m_aPages;
+    std::vector<VclPtr<TabPage>> m_aAddedPages;
+    std::vector<int> m_aIds;
+    std::vector<VclPtr<VclGrid>> m_aAddedGrids;
+    Idle m_aUpdateRoadmapIdle;
+
+    int find_page(std::string_view rIdent) const;
+    int find_id(int nId) const;
+
+    DECL_LINK(OnRoadmapItemSelected, LinkParamNone*, void);
+    DECL_LINK(UpdateRoadmap_Hdl, Timer*, void);
+
+public:
+    SalInstanceAssistant(vcl::RoadmapWizard* pDialog, SalInstanceBuilder* 
pBuilder,
+                         bool bTakeOwnership);
+    virtual int get_current_page() const override;
+    virtual int get_n_pages() const override;
+    virtual OString get_page_ident(int nPage) const override;
+    virtual OString get_current_page_ident() const override;
+    virtual void set_current_page(int nPage) override;
+    virtual void set_current_page(const OString& rIdent) override;
+    virtual void set_page_index(const OString& rIdent, int nNewIndex) override;
+    virtual weld::Container* append_page(const OString& rIdent) override;
+    virtual OUString get_page_title(const OString& rIdent) const override;
+    virtual void set_page_title(const OString& rIdent, const OUString& rTitle) 
override;
+    virtual void set_page_sensitive(const OString& rIdent, bool bSensitive) 
override;
+    virtual void set_page_side_help_id(const OString& rHelpId) override;
+    virtual void set_page_side_image(const OUString& rImage) override;
+    weld::Button* weld_widget_for_response(int nResponse) override;
+
+    virtual ~SalInstanceAssistant() override;
+};
+
 class WeldTextFilter final : public TextFilter
 {
 private:
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 482b5a59e145..12f00597bb02 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1986,203 +1986,183 @@ weld::Container* 
SalInstanceMessageDialog::weld_message_area()
     return new SalInstanceContainer(m_xMessageDialog->get_message_area(), 
m_pBuilder, false);
 }
 
-namespace
-{
-class SalInstanceAssistant : public SalInstanceDialog, public virtual 
weld::Assistant
+int SalInstanceAssistant::find_page(std::string_view rIdent) const
 {
-private:
-    VclPtr<vcl::RoadmapWizard> m_xWizard;
-    std::vector<std::unique_ptr<SalInstanceContainer>> m_aPages;
-    std::vector<VclPtr<TabPage>> m_aAddedPages;
-    std::vector<int> m_aIds;
-    std::vector<VclPtr<VclGrid>> m_aAddedGrids;
-    Idle m_aUpdateRoadmapIdle;
-
-    int find_page(std::string_view rIdent) const
+    for (size_t i = 0; i < m_aAddedPages.size(); ++i)
     {
-        for (size_t i = 0; i < m_aAddedPages.size(); ++i)
-        {
-            if (m_aAddedPages[i]->get_id().toUtf8() == rIdent)
-                return i;
-        }
-        return -1;
+        if (m_aAddedPages[i]->get_id().toUtf8() == rIdent)
+            return i;
     }
+    return -1;
+}
 
-    int find_id(int nId) const
+int SalInstanceAssistant::find_id(int nId) const
+{
+    for (size_t i = 0; i < m_aIds.size(); ++i)
     {
-        for (size_t i = 0; i < m_aIds.size(); ++i)
-        {
-            if (nId == m_aIds[i])
-                return i;
-        }
-        return -1;
+        if (nId == m_aIds[i])
+            return i;
     }
+    return -1;
+}
 
-    DECL_LINK(OnRoadmapItemSelected, LinkParamNone*, void);
-    DECL_LINK(UpdateRoadmap_Hdl, Timer*, void);
+SalInstanceAssistant::SalInstanceAssistant(vcl::RoadmapWizard* pDialog,
+                                           SalInstanceBuilder* pBuilder, bool 
bTakeOwnership)
+    : SalInstanceDialog(pDialog, pBuilder, bTakeOwnership)
+    , m_xWizard(pDialog)
+    , m_aUpdateRoadmapIdle("SalInstanceAssistant m_aUpdateRoadmapIdle")
+{
+    m_xWizard->SetItemSelectHdl(LINK(this, SalInstanceAssistant, 
OnRoadmapItemSelected));
 
-public:
-    SalInstanceAssistant(vcl::RoadmapWizard* pDialog, SalInstanceBuilder* 
pBuilder,
-                         bool bTakeOwnership)
-        : SalInstanceDialog(pDialog, pBuilder, bTakeOwnership)
-        , m_xWizard(pDialog)
-        , m_aUpdateRoadmapIdle("SalInstanceAssistant m_aUpdateRoadmapIdle")
-    {
-        m_xWizard->SetItemSelectHdl(LINK(this, SalInstanceAssistant, 
OnRoadmapItemSelected));
+    m_aUpdateRoadmapIdle.SetInvokeHandler(LINK(this, SalInstanceAssistant, 
UpdateRoadmap_Hdl));
+    m_aUpdateRoadmapIdle.SetPriority(TaskPriority::HIGHEST);
+}
 
-        m_aUpdateRoadmapIdle.SetInvokeHandler(LINK(this, SalInstanceAssistant, 
UpdateRoadmap_Hdl));
-        m_aUpdateRoadmapIdle.SetPriority(TaskPriority::HIGHEST);
-    }
+int SalInstanceAssistant::get_current_page() const { return 
find_id(m_xWizard->GetCurLevel()); }
 
-    virtual int get_current_page() const override { return 
find_id(m_xWizard->GetCurLevel()); }
+int SalInstanceAssistant::get_n_pages() const { return m_aAddedPages.size(); }
 
-    virtual int get_n_pages() const override { return m_aAddedPages.size(); }
+OString SalInstanceAssistant::get_page_ident(int nPage) const
+{
+    return m_aAddedPages[nPage]->get_id().toUtf8();
+}
 
-    virtual OString get_page_ident(int nPage) const override
-    {
-        return m_aAddedPages[nPage]->get_id().toUtf8();
-    }
+OString SalInstanceAssistant::get_current_page_ident() const
+{
+    return get_page_ident(get_current_page());
+}
 
-    virtual OString get_current_page_ident() const override
-    {
-        return get_page_ident(get_current_page());
-    }
+void SalInstanceAssistant::set_current_page(int nPage)
+{
+    disable_notify_events();
 
-    virtual void set_current_page(int nPage) override
+    // take the first shown page as the size for all pages
+    if (m_xWizard->GetPageSizePixel().Width() == 0)
     {
-        disable_notify_events();
-
-        // take the first shown page as the size for all pages
-        if (m_xWizard->GetPageSizePixel().Width() == 0)
+        Size aFinalSize;
+        for (int i = 0, nPages = get_n_pages(); i < nPages; ++i)
         {
-            Size aFinalSize;
-            for (int i = 0, nPages = get_n_pages(); i < nPages; ++i)
-            {
-                TabPage* pPage = m_xWizard->GetPage(m_aIds[i]);
-                assert(pPage);
-                Size aPageSize(pPage->get_preferred_size());
-                if (aPageSize.Width() > aFinalSize.Width())
-                    aFinalSize.setWidth(aPageSize.Width());
-                if (aPageSize.Height() > aFinalSize.Height())
-                    aFinalSize.setHeight(aPageSize.Height());
-            }
-            m_xWizard->SetPageSizePixel(aFinalSize);
+            TabPage* pPage = m_xWizard->GetPage(m_aIds[i]);
+            assert(pPage);
+            Size aPageSize(pPage->get_preferred_size());
+            if (aPageSize.Width() > aFinalSize.Width())
+                aFinalSize.setWidth(aPageSize.Width());
+            if (aPageSize.Height() > aFinalSize.Height())
+                aFinalSize.setHeight(aPageSize.Height());
         }
-
-        (void)m_xWizard->ShowPage(m_aIds[nPage]);
-        enable_notify_events();
+        m_xWizard->SetPageSizePixel(aFinalSize);
     }
 
-    virtual void set_current_page(const OString& rIdent) override
-    {
-        int nIndex = find_page(rIdent);
-        if (nIndex == -1)
-            return;
-        set_current_page(nIndex);
-    }
+    (void)m_xWizard->ShowPage(m_aIds[nPage]);
+    enable_notify_events();
+}
 
-    virtual void set_page_index(const OString& rIdent, int nNewIndex) override
-    {
-        int nOldIndex = find_page(rIdent);
+void SalInstanceAssistant::set_current_page(const OString& rIdent)
+{
+    int nIndex = find_page(rIdent);
+    if (nIndex == -1)
+        return;
+    set_current_page(nIndex);
+}
 
-        if (nOldIndex == -1)
-            return;
+void SalInstanceAssistant::set_page_index(const OString& rIdent, int nNewIndex)
+{
+    int nOldIndex = find_page(rIdent);
 
-        if (nOldIndex == nNewIndex)
-            return;
+    if (nOldIndex == -1)
+        return;
 
-        disable_notify_events();
+    if (nOldIndex == nNewIndex)
+        return;
 
-        auto entry = std::move(m_aAddedPages[nOldIndex]);
-        m_aAddedPages.erase(m_aAddedPages.begin() + nOldIndex);
-        m_aAddedPages.insert(m_aAddedPages.begin() + nNewIndex, 
std::move(entry));
+    disable_notify_events();
 
-        int nId = m_aIds[nOldIndex];
-        m_aIds.erase(m_aIds.begin() + nOldIndex);
-        m_aIds.insert(m_aIds.begin() + nNewIndex, nId);
+    auto entry = std::move(m_aAddedPages[nOldIndex]);
+    m_aAddedPages.erase(m_aAddedPages.begin() + nOldIndex);
+    m_aAddedPages.insert(m_aAddedPages.begin() + nNewIndex, std::move(entry));
 
-        m_aUpdateRoadmapIdle.Start();
+    int nId = m_aIds[nOldIndex];
+    m_aIds.erase(m_aIds.begin() + nOldIndex);
+    m_aIds.insert(m_aIds.begin() + nNewIndex, nId);
 
-        enable_notify_events();
-    }
+    m_aUpdateRoadmapIdle.Start();
 
-    virtual weld::Container* append_page(const OString& rIdent) override
-    {
-        VclPtrInstance<TabPage> xPage(m_xWizard);
-        VclPtrInstance<VclGrid> xGrid(xPage);
-        xPage->set_id(OUString::fromUtf8(rIdent));
-        xPage->Show();
-        xGrid->set_hexpand(true);
-        xGrid->set_vexpand(true);
-        xGrid->Show();
-        m_xWizard->AddPage(xPage);
-        m_aIds.push_back(m_aAddedPages.size());
-        m_xWizard->SetPage(m_aIds.back(), xPage);
-        m_aAddedPages.push_back(xPage);
-        m_aAddedGrids.push_back(xGrid);
+    enable_notify_events();
+}
 
-        m_aUpdateRoadmapIdle.Start();
+weld::Container* SalInstanceAssistant::append_page(const OString& rIdent)
+{
+    VclPtrInstance<TabPage> xPage(m_xWizard);
+    VclPtrInstance<VclGrid> xGrid(xPage);
+    xPage->set_id(OUString::fromUtf8(rIdent));
+    xPage->Show();
+    xGrid->set_hexpand(true);
+    xGrid->set_vexpand(true);
+    xGrid->Show();
+    m_xWizard->AddPage(xPage);
+    m_aIds.push_back(m_aAddedPages.size());
+    m_xWizard->SetPage(m_aIds.back(), xPage);
+    m_aAddedPages.push_back(xPage);
+    m_aAddedGrids.push_back(xGrid);
 
-        m_aPages.emplace_back(new SalInstanceContainer(xGrid, m_pBuilder, 
false));
-        return m_aPages.back().get();
-    }
+    m_aUpdateRoadmapIdle.Start();
 
-    virtual OUString get_page_title(const OString& rIdent) const override
-    {
-        int nIndex = find_page(rIdent);
-        if (nIndex == -1)
-            return OUString();
-        return m_aAddedPages[nIndex]->GetText();
-    }
+    m_aPages.emplace_back(new SalInstanceContainer(xGrid, m_pBuilder, false));
+    return m_aPages.back().get();
+}
 
-    virtual void set_page_title(const OString& rIdent, const OUString& rTitle) 
override
-    {
-        int nIndex = find_page(rIdent);
-        if (nIndex == -1)
-            return;
-        if (m_aAddedPages[nIndex]->GetText() != rTitle)
-        {
-            disable_notify_events();
-            m_aAddedPages[nIndex]->SetText(rTitle);
-            m_aUpdateRoadmapIdle.Start();
-            enable_notify_events();
-        }
-    }
+OUString SalInstanceAssistant::get_page_title(const OString& rIdent) const
+{
+    int nIndex = find_page(rIdent);
+    if (nIndex == -1)
+        return OUString();
+    return m_aAddedPages[nIndex]->GetText();
+}
 
-    virtual void set_page_sensitive(const OString& rIdent, bool bSensitive) 
override
+void SalInstanceAssistant::set_page_title(const OString& rIdent, const 
OUString& rTitle)
+{
+    int nIndex = find_page(rIdent);
+    if (nIndex == -1)
+        return;
+    if (m_aAddedPages[nIndex]->GetText() != rTitle)
     {
-        int nIndex = find_page(rIdent);
-        if (nIndex == -1)
-            return;
-        if (m_aAddedPages[nIndex]->IsEnabled() != bSensitive)
-        {
-            disable_notify_events();
-            m_aAddedPages[nIndex]->Enable(bSensitive);
-            m_aUpdateRoadmapIdle.Start();
-            enable_notify_events();
-        }
+        disable_notify_events();
+        m_aAddedPages[nIndex]->SetText(rTitle);
+        m_aUpdateRoadmapIdle.Start();
+        enable_notify_events();
     }
+}
 
-    virtual void set_page_side_help_id(const OString& rHelpId) override
+void SalInstanceAssistant::set_page_sensitive(const OString& rIdent, bool 
bSensitive)
+{
+    int nIndex = find_page(rIdent);
+    if (nIndex == -1)
+        return;
+    if (m_aAddedPages[nIndex]->IsEnabled() != bSensitive)
     {
-        m_xWizard->SetRoadmapHelpId(rHelpId);
+        disable_notify_events();
+        m_aAddedPages[nIndex]->Enable(bSensitive);
+        m_aUpdateRoadmapIdle.Start();
+        enable_notify_events();
     }
+}
 
-    virtual void set_page_side_image(const OUString& rImage) override
-    {
-        m_xWizard->SetRoadmapBitmap(createImage(rImage).GetBitmapEx());
-    }
+void SalInstanceAssistant::set_page_side_help_id(const OString& rHelpId)
+{
+    m_xWizard->SetRoadmapHelpId(rHelpId);
+}
 
-    weld::Button* weld_widget_for_response(int nResponse) override;
+void SalInstanceAssistant::set_page_side_image(const OUString& rImage)
+{
+    m_xWizard->SetRoadmapBitmap(createImage(rImage).GetBitmapEx());
+}
 
-    virtual ~SalInstanceAssistant() override
-    {
-        for (auto& rGrid : m_aAddedGrids)
-            rGrid.disposeAndClear();
-        for (auto& rPage : m_aAddedPages)
-            rPage.disposeAndClear();
-    }
-};
+SalInstanceAssistant::~SalInstanceAssistant()
+{
+    for (auto& rGrid : m_aAddedGrids)
+        rGrid.disposeAndClear();
+    for (auto& rPage : m_aAddedPages)
+        rPage.disposeAndClear();
 }
 
 IMPL_LINK_NOARG(SalInstanceAssistant, OnRoadmapItemSelected, LinkParamNone*, 
void)

Reply via email to