[Libreoffice-commits] core.git: Branch 'distro/collabora/co-2021' - 2 commits - vcl/inc vcl/jsdialog vcl/source

Szymon KÅ‚os (via logerrit) logerrit at kemper.freedesktop.org
Fri Jun 11 08:20:07 UTC 2021


 vcl/inc/jsdialog/jsdialogbuilder.hxx |    8 +
 vcl/inc/salvtables.hxx               |   49 ++++++++
 vcl/jsdialog/jsdialogbuilder.cxx     |   18 +++
 vcl/source/app/salvtables.cxx        |  199 ++++++++++++++++-------------------
 4 files changed, 168 insertions(+), 106 deletions(-)

New commits:
commit 91b52830dbbcc2ee2dabbc646249ed804af1964b
Author:     Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Thu Jun 10 15:40:33 2021 +0200
Commit:     Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Fri Jun 11 10:19:38 2021 +0200

    jsdialog: weld MenuButton
    
    Change-Id: I79b753e070183daa809b23dbb7d3052000ebecd4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116995
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>

diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index 266d19272a18..cbdd4669cab3 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -253,6 +253,7 @@ public:
     virtual std::unique_ptr<weld::IconView> weld_icon_view(const OString& id) override;
     virtual std::unique_ptr<weld::RadioButton> weld_radio_button(const OString& id) override;
     virtual std::unique_ptr<weld::Frame> weld_frame(const OString& id) override;
+    virtual std::unique_ptr<weld::MenuButton> weld_menu_button(const OString& id) override;
 
     static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent,
                                                     VclMessageType eMessageType,
@@ -608,4 +609,11 @@ public:
             bool bTakeOwnership);
 };
 
+class JSMenuButton : public JSWidget<SalInstanceMenuButton, ::MenuButton>
+{
+public:
+    JSMenuButton(JSDialogSender* pSender, ::MenuButton* pMenuButton, SalInstanceBuilder* pBuilder,
+                 bool bTakeOwnership);
+};
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index 5cb55ed4f5d3..6657e830e3e6 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -873,6 +873,18 @@ std::unique_ptr<weld::Frame> JSInstanceBuilder::weld_frame(const OString& id)
     return pWeldWidget;
 }
 
+std::unique_ptr<weld::MenuButton> JSInstanceBuilder::weld_menu_button(const OString& id)
+{
+    ::MenuButton* pMenuButton = m_xBuilder->get<::MenuButton>(id);
+    auto pWeldWidget
+        = pMenuButton ? std::make_unique<JSMenuButton>(this, pMenuButton, this, false) : nullptr;
+
+    if (pWeldWidget)
+        RememberWidget(id, pWeldWidget.get());
+
+    return pWeldWidget;
+}
+
 weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* pParent,
                                                             VclMessageType eMessageType,
                                                             VclButtonsType eButtonType,
@@ -1407,4 +1419,10 @@ JSFrame::JSFrame(JSDialogSender* pSender, ::VclFrame* pFrame, SalInstanceBuilder
 {
 }
 
+JSMenuButton::JSMenuButton(JSDialogSender* pSender, ::MenuButton* pMenuButton,
+                           SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+    : JSWidget<SalInstanceMenuButton, ::MenuButton>(pSender, pMenuButton, pBuilder, bTakeOwnership)
+{
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
commit e4a4e866bfaef91fa7c92e3c0095fc3bf16b87bb
Author:     Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Thu Jun 10 15:32:49 2021 +0200
Commit:     Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Fri Jun 11 10:19:23 2021 +0200

    Move SalInstanceMenuButton decl to header
    
    Change-Id: I5f5f0ceb58925874c6878760a99179a4936198fa
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116991
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>

diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 52b71320c332..a1927efd633d 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1812,4 +1812,53 @@ public:
     virtual std::unique_ptr<weld::Label> weld_label_widget() const override;
 };
 
+class SalInstanceMenuButton : public SalInstanceButton, public virtual weld::MenuButton
+{
+private:
+    VclPtr<::MenuButton> m_xMenuButton;
+    sal_uInt16 m_nLastId;
+
+    DECL_LINK(MenuSelectHdl, ::MenuButton*, void);
+    DECL_LINK(ActivateHdl, ::MenuButton*, void);
+
+public:
+    SalInstanceMenuButton(::MenuButton* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+    virtual void set_active(bool active) override;
+
+    virtual bool get_active() const override;
+
+    virtual void set_inconsistent(bool /*inconsistent*/) override;
+
+    virtual bool get_inconsistent() const override;
+
+    virtual void insert_item(int pos, const OUString& rId, const OUString& rStr,
+                             const OUString* pIconName, VirtualDevice* pImageSurface,
+                             TriState eCheckRadioFalse) override;
+
+    virtual void insert_separator(int pos, const OUString& rId) override;
+
+    virtual void set_item_sensitive(const OString& rIdent, bool bSensitive) override;
+
+    virtual void remove_item(const OString& rId) override;
+
+    virtual void clear() override;
+
+    virtual void set_item_active(const OString& rIdent, bool bActive) override;
+
+    virtual void set_item_label(const OString& rIdent, const OUString& rText) override;
+
+    virtual OUString get_item_label(const OString& rIdent) const override;
+
+    virtual void set_item_visible(const OString& rIdent, bool bShow) override;
+
+    virtual void set_item_help_id(const OString& rIdent, const OString& rHelpId) override;
+
+    virtual OString get_item_help_id(const OString& rIdent) const override;
+
+    virtual void set_popover(weld::Widget* pPopover) override;
+
+    virtual ~SalInstanceMenuButton() override;
+};
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 0501ff7fa359..ec19d667fb4d 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -2602,132 +2602,119 @@ weld::Button* SalInstanceAssistant::weld_widget_for_response(int nResponse)
     return nullptr;
 }
 
-namespace
-{
-class SalInstanceMenuButton : public SalInstanceButton, public virtual weld::MenuButton
+SalInstanceMenuButton::SalInstanceMenuButton(::MenuButton* pButton, SalInstanceBuilder* pBuilder,
+                                             bool bTakeOwnership)
+    : SalInstanceButton(pButton, pBuilder, bTakeOwnership)
+    , m_xMenuButton(pButton)
+    , m_nLastId(0)
 {
-private:
-    VclPtr<::MenuButton> m_xMenuButton;
-    sal_uInt16 m_nLastId;
-
-    DECL_LINK(MenuSelectHdl, ::MenuButton*, void);
-    DECL_LINK(ActivateHdl, ::MenuButton*, void);
-
-public:
-    SalInstanceMenuButton(::MenuButton* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
-        : SalInstanceButton(pButton, pBuilder, bTakeOwnership)
-        , m_xMenuButton(pButton)
-        , m_nLastId(0)
+    m_xMenuButton->SetActivateHdl(LINK(this, SalInstanceMenuButton, ActivateHdl));
+    m_xMenuButton->SetSelectHdl(LINK(this, SalInstanceMenuButton, MenuSelectHdl));
+    if (PopupMenu* pMenu = m_xMenuButton->GetPopupMenu())
     {
-        m_xMenuButton->SetActivateHdl(LINK(this, SalInstanceMenuButton, ActivateHdl));
-        m_xMenuButton->SetSelectHdl(LINK(this, SalInstanceMenuButton, MenuSelectHdl));
-        if (PopupMenu* pMenu = m_xMenuButton->GetPopupMenu())
-        {
-            pMenu->SetMenuFlags(MenuFlags::NoAutoMnemonics);
-            const auto nCount = pMenu->GetItemCount();
-            m_nLastId = nCount ? pMenu->GetItemId(nCount - 1) : 0;
-        }
+        pMenu->SetMenuFlags(MenuFlags::NoAutoMnemonics);
+        const auto nCount = pMenu->GetItemCount();
+        m_nLastId = nCount ? pMenu->GetItemId(nCount - 1) : 0;
     }
+}
 
-    virtual void set_active(bool active) override
-    {
-        if (active == get_active())
-            return;
-        if (active)
-            m_xMenuButton->ExecuteMenu();
-        else
-            m_xMenuButton->CancelMenu();
-    }
+void SalInstanceMenuButton::set_active(bool active)
+{
+    if (active == get_active())
+        return;
+    if (active)
+        m_xMenuButton->ExecuteMenu();
+    else
+        m_xMenuButton->CancelMenu();
+}
 
-    virtual bool get_active() const override { return m_xMenuButton->InPopupMode(); }
+bool SalInstanceMenuButton::get_active() const { return m_xMenuButton->InPopupMode(); }
 
-    virtual void set_inconsistent(bool /*inconsistent*/) override
-    {
-        //not available
-    }
+void SalInstanceMenuButton::set_inconsistent(bool /*inconsistent*/)
+{
+    //not available
+}
 
-    virtual bool get_inconsistent() const override { return false; }
+bool SalInstanceMenuButton::get_inconsistent() const { return false; }
 
-    virtual void insert_item(int pos, const OUString& rId, const OUString& rStr,
-                             const OUString* pIconName, VirtualDevice* pImageSurface,
-                             TriState eCheckRadioFalse) override
-    {
-        m_nLastId = insert_to_menu(m_nLastId, m_xMenuButton->GetPopupMenu(), pos, rId, rStr,
-                                   pIconName, pImageSurface, nullptr, eCheckRadioFalse);
-    }
+void SalInstanceMenuButton::insert_item(int pos, const OUString& rId, const OUString& rStr,
+                                        const OUString* pIconName, VirtualDevice* pImageSurface,
+                                        TriState eCheckRadioFalse)
+{
+    m_nLastId = insert_to_menu(m_nLastId, m_xMenuButton->GetPopupMenu(), pos, rId, rStr, pIconName,
+                               pImageSurface, nullptr, eCheckRadioFalse);
+}
 
-    virtual void insert_separator(int pos, const OUString& rId) override
-    {
-        auto nInsertPos = pos == -1 ? MENU_APPEND : pos;
-        m_xMenuButton->GetPopupMenu()->InsertSeparator(rId.toUtf8(), nInsertPos);
-    }
+void SalInstanceMenuButton::insert_separator(int pos, const OUString& rId)
+{
+    auto nInsertPos = pos == -1 ? MENU_APPEND : pos;
+    m_xMenuButton->GetPopupMenu()->InsertSeparator(rId.toUtf8(), nInsertPos);
+}
 
-    virtual void set_item_sensitive(const OString& rIdent, bool bSensitive) override
-    {
-        PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
-        pMenu->EnableItem(rIdent, bSensitive);
-    }
+void SalInstanceMenuButton::set_item_sensitive(const OString& rIdent, bool bSensitive)
+{
+    PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
+    pMenu->EnableItem(rIdent, bSensitive);
+}
 
-    virtual void remove_item(const OString& rId) override
-    {
-        PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
-        pMenu->RemoveItem(pMenu->GetItemPos(pMenu->GetItemId(rId)));
-    }
+void SalInstanceMenuButton::remove_item(const OString& rId)
+{
+    PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
+    pMenu->RemoveItem(pMenu->GetItemPos(pMenu->GetItemId(rId)));
+}
 
-    virtual void clear() override
-    {
-        PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
-        pMenu->Clear();
-    }
+void SalInstanceMenuButton::clear()
+{
+    PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
+    pMenu->Clear();
+}
 
-    virtual void set_item_active(const OString& rIdent, bool bActive) override
-    {
-        PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
-        pMenu->CheckItem(rIdent, bActive);
-    }
+void SalInstanceMenuButton::set_item_active(const OString& rIdent, bool bActive)
+{
+    PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
+    pMenu->CheckItem(rIdent, bActive);
+}
 
-    virtual void set_item_label(const OString& rIdent, const OUString& rText) override
-    {
-        PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
-        pMenu->SetItemText(pMenu->GetItemId(rIdent), rText);
-    }
+void SalInstanceMenuButton::set_item_label(const OString& rIdent, const OUString& rText)
+{
+    PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
+    pMenu->SetItemText(pMenu->GetItemId(rIdent), rText);
+}
 
-    virtual OUString get_item_label(const OString& rIdent) const override
-    {
-        PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
-        return pMenu->GetItemText(pMenu->GetItemId(rIdent));
-    }
+OUString SalInstanceMenuButton::get_item_label(const OString& rIdent) const
+{
+    PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
+    return pMenu->GetItemText(pMenu->GetItemId(rIdent));
+}
 
-    virtual void set_item_visible(const OString& rIdent, bool bShow) override
-    {
-        PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
-        pMenu->ShowItem(pMenu->GetItemId(rIdent), bShow);
-    }
+void SalInstanceMenuButton::set_item_visible(const OString& rIdent, bool bShow)
+{
+    PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
+    pMenu->ShowItem(pMenu->GetItemId(rIdent), bShow);
+}
 
-    virtual void set_item_help_id(const OString& rIdent, const OString& rHelpId) override
-    {
-        PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
-        pMenu->SetHelpId(pMenu->GetItemId(rIdent), rHelpId);
-    }
+void SalInstanceMenuButton::set_item_help_id(const OString& rIdent, const OString& rHelpId)
+{
+    PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
+    pMenu->SetHelpId(pMenu->GetItemId(rIdent), rHelpId);
+}
 
-    virtual OString get_item_help_id(const OString& rIdent) const override
-    {
-        PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
-        return pMenu->GetHelpId(pMenu->GetItemId(rIdent));
-    }
+OString SalInstanceMenuButton::get_item_help_id(const OString& rIdent) const
+{
+    PopupMenu* pMenu = m_xMenuButton->GetPopupMenu();
+    return pMenu->GetHelpId(pMenu->GetItemId(rIdent));
+}
 
-    virtual void set_popover(weld::Widget* pPopover) override
-    {
-        SalInstanceWidget* pPopoverWidget = dynamic_cast<SalInstanceWidget*>(pPopover);
-        m_xMenuButton->SetPopover(pPopoverWidget ? pPopoverWidget->getWidget() : nullptr);
-    }
+void SalInstanceMenuButton::set_popover(weld::Widget* pPopover)
+{
+    SalInstanceWidget* pPopoverWidget = dynamic_cast<SalInstanceWidget*>(pPopover);
+    m_xMenuButton->SetPopover(pPopoverWidget ? pPopoverWidget->getWidget() : nullptr);
+}
 
-    virtual ~SalInstanceMenuButton() override
-    {
-        m_xMenuButton->SetSelectHdl(Link<::MenuButton*, void>());
-        m_xMenuButton->SetActivateHdl(Link<::MenuButton*, void>());
-    }
-};
+SalInstanceMenuButton::~SalInstanceMenuButton()
+{
+    m_xMenuButton->SetSelectHdl(Link<::MenuButton*, void>());
+    m_xMenuButton->SetActivateHdl(Link<::MenuButton*, void>());
 }
 
 IMPL_LINK_NOARG(SalInstanceMenuButton, MenuSelectHdl, ::MenuButton*, void)


More information about the Libreoffice-commits mailing list