[Libreoffice-commits] core.git: include/vcl vcl/inc vcl/source vcl/unx

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Tue May 12 11:40:39 UTC 2020


 include/vcl/weld.hxx          |   10 ++++++++++
 vcl/inc/salvtables.hxx        |    5 ++++-
 vcl/source/app/salvtables.cxx |   31 +++++++++++++++++++++++++++++++
 vcl/unx/gtk3/gtk3gtkinst.cxx  |   31 +++++++++++++++++++++++++++++++
 4 files changed, 76 insertions(+), 1 deletion(-)

New commits:
commit 7c902087c9cef04cd8eff4249755f527249b0300
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue May 12 11:12:18 2020 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Tue May 12 13:39:56 2020 +0200

    add Paned access
    
    Change-Id: I5da0125a8f76d201e8dab2892b1f205c759599b6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94045
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 63f774e3af06..79b0de0ae508 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -294,6 +294,15 @@ public:
     virtual void reorder_child(weld::Widget* pWidget, int position) = 0;
 };
 
+class VCL_DLLPUBLIC Paned : virtual public Container
+{
+public:
+    // set pixel position of divider
+    virtual void set_position(int nPos) = 0;
+    // get pixel position of divider
+    virtual int get_position() const = 0;
+};
+
 class VCL_DLLPUBLIC ScrolledWindow : virtual public Container
 {
 protected:
@@ -2188,6 +2197,7 @@ public:
                                                       bool bTakeOwnership = false)
         = 0;
     virtual std::unique_ptr<Box> weld_box(const OString& id, bool bTakeOwnership = false) = 0;
+    virtual std::unique_ptr<Paned> weld_paned(const OString& id, bool bTakeOwnership = false) = 0;
     virtual std::unique_ptr<Button> weld_button(const OString& id, bool bTakeOwnership = false) = 0;
     virtual std::unique_ptr<MenuButton> weld_menu_button(const OString& id,
                                                          bool bTakeOwnership = false)
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 1553538ea932..78dfb91d23f4 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -42,6 +42,9 @@ public:
     virtual std::unique_ptr<weld::Box> weld_box(const OString& id,
                                                 bool bTakeOwnership = false) override;
 
+    virtual std::unique_ptr<weld::Paned> weld_paned(const OString& id,
+                                                    bool bTakeOwnership = false) override;
+
     virtual std::unique_ptr<weld::Frame> weld_frame(const OString& id,
                                                     bool bTakeOwnership = false) override;
 
@@ -612,4 +615,4 @@ public:
     virtual ~SalInstanceSpinButton() override;
 };
 
-#endif
\ No newline at end of file
+#endif
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index f513a44c4d98..a5e027a5de1f 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1869,6 +1869,29 @@ public:
     virtual std::unique_ptr<weld::Label> weld_label_widget() const override;
 };
 
+class SalInstancePaned : public SalInstanceContainer, public virtual weld::Paned
+{
+private:
+    VclPtr<VclPaned> m_xPaned;
+
+public:
+    SalInstancePaned(VclPaned* pPaned, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+        : SalInstanceContainer(pPaned, pBuilder, bTakeOwnership)
+        , m_xPaned(pPaned)
+    {
+    }
+
+    virtual void set_position(int nPos) override
+    {
+        m_xPaned->set_position(nPos);
+    }
+
+    virtual int get_position() const override
+    {
+        return m_xPaned->get_position();
+    }
+};
+
 class SalInstanceScrolledWindow : public SalInstanceContainer, public virtual weld::ScrolledWindow
 {
 private:
@@ -6511,6 +6534,14 @@ std::unique_ptr<weld::Box> SalInstanceBuilder::weld_box(const OString& id, bool
                       : nullptr;
 }
 
+std::unique_ptr<weld::Paned> SalInstanceBuilder::weld_paned(const OString& id,
+                                                            bool bTakeOwnership)
+{
+    VclPaned* pPaned = m_xBuilder->get<VclPaned>(id);
+    return pPaned ? std::make_unique<SalInstancePaned>(pPaned, this, bTakeOwnership)
+                  : nullptr;
+}
+
 std::unique_ptr<weld::Frame> SalInstanceBuilder::weld_frame(const OString& id, bool bTakeOwnership)
 {
     VclFrame* pFrame = m_xBuilder->get<VclFrame>(id);
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 934d52f8f6f5..04fc440f50c6 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -5089,6 +5089,28 @@ public:
     virtual std::unique_ptr<weld::Label> weld_label_widget() const override;
 };
 
+class GtkInstancePaned : public GtkInstanceContainer, public virtual weld::Paned
+{
+private:
+    GtkPaned* m_pPaned;
+public:
+    GtkInstancePaned(GtkPaned* pPaned, GtkInstanceBuilder* pBuilder, bool bTakeOwnership)
+        : GtkInstanceContainer(GTK_CONTAINER(pPaned), pBuilder, bTakeOwnership)
+        , m_pPaned(pPaned)
+    {
+    }
+
+    virtual void set_position(int nPos) override
+    {
+        gtk_paned_set_position(m_pPaned, nPos);
+    }
+
+    virtual int get_position() const override
+    {
+        return gtk_paned_get_position(m_pPaned);
+    }
+};
+
 }
 
 static GType crippled_viewport_get_type();
@@ -15243,6 +15265,15 @@ public:
         return std::make_unique<GtkInstanceBox>(pBox, this, bTakeOwnership);
     }
 
+    virtual std::unique_ptr<weld::Paned> weld_paned(const OString &id, bool bTakeOwnership) override
+    {
+        GtkPaned* pPaned = GTK_PANED(gtk_builder_get_object(m_pBuilder, id.getStr()));
+        if (!pPaned)
+            return nullptr;
+        auto_add_parentless_widgets_to_container(GTK_WIDGET(pPaned));
+        return std::make_unique<GtkInstancePaned>(pPaned, this, bTakeOwnership);
+    }
+
     virtual std::unique_ptr<weld::Frame> weld_frame(const OString &id, bool bTakeOwnership) override
     {
         GtkFrame* pFrame = GTK_FRAME(gtk_builder_get_object(m_pBuilder, id.getStr()));


More information about the Libreoffice-commits mailing list