include/vcl/salvtables.hxx | 2 + include/vcl/weld.hxx | 1 vcl/source/app/salvtables.cxx | 21 ++++++++++++- vcl/unx/gtk3/gtk3gtkinst.cxx | 64 +++++++++++++++++++++--------------------- 4 files changed, 54 insertions(+), 34 deletions(-)
New commits: commit a5a8731ce214bcd5ce1c95155b0538ff2d9d337e Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Mon Jun 22 11:26:39 2020 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Mon Jun 22 17:32:16 2020 +0200 add get_page_index Change-Id: Id90e8fc3fc2f7fa88368e02eaa492b8fc21138e0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96859 Tested-by: Caolán McNamara <caol...@redhat.com> Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/include/vcl/salvtables.hxx b/include/vcl/salvtables.hxx index fbb87a1dc907..1dc2d6a0cadd 100644 --- a/include/vcl/salvtables.hxx +++ b/include/vcl/salvtables.hxx @@ -1037,6 +1037,8 @@ public: virtual int get_current_page() const override; + virtual int get_page_index(const OString& rIdent) const override; + virtual OString get_page_ident(int nPage) const override; virtual OString get_current_page_ident() const override; diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index e14c2c0d5ed3..2e0134a8c4a4 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -374,6 +374,7 @@ protected: public: virtual int get_current_page() const = 0; + virtual int get_page_index(const OString& rIdent) const = 0; virtual OString get_page_ident(int nPage) const = 0; virtual OString get_current_page_ident() const = 0; virtual void set_current_page(int nPage) = 0; diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 116c974d1d6a..3e294b4164e5 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -2175,12 +2175,21 @@ OString SalInstanceNotebook::get_current_page_ident() const return m_xNotebook->GetPageName(m_xNotebook->GetCurPageId()); } -weld::Container* SalInstanceNotebook::get_page(const OString& rIdent) const +int SalInstanceNotebook::get_page_index(const OString& rIdent) const { sal_uInt16 nPageId = m_xNotebook->GetPageId(rIdent); sal_uInt16 nPageIndex = m_xNotebook->GetPagePos(nPageId); if (nPageIndex == TAB_PAGE_NOTFOUND) + return -1; + return nPageIndex; +} + +weld::Container* SalInstanceNotebook::get_page(const OString& rIdent) const +{ + int nPageIndex = get_page_index(rIdent); + if (nPageIndex == -1) return nullptr; + sal_uInt16 nPageId = m_xNotebook->GetPageId(rIdent); TabPage* pPage = m_xNotebook->GetTabPage(nPageId); vcl::Window* pChild = pPage->GetChild(0); if (m_aPages.size() < nPageIndex + 1U) @@ -2304,10 +2313,18 @@ public: virtual OString get_current_page_ident() const override { return m_xNotebook->GetCurPageId(); } - virtual weld::Container* get_page(const OString& rIdent) const override + virtual int get_page_index(const OString& rIdent) const override { sal_uInt16 nPageIndex = m_xNotebook->GetPagePos(rIdent); if (nPageIndex == TAB_PAGE_NOTFOUND) + return -1; + return nPageIndex; + } + + virtual weld::Container* get_page(const OString& rIdent) const override + { + int nPageIndex = get_page_index(rIdent); + if (nPageIndex == -1) return nullptr; auto pChild = m_xNotebook->GetPage(rIdent); if (m_aPages.size() < nPageIndex + 1U) diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 26e1742f7e61..df717239e62c 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -6108,36 +6108,6 @@ private: enable_notify_events(); } - gint get_page_number(const OString& rIdent) const - { - auto nMainIndex = get_page_number(m_pNotebook, rIdent); - auto nOverFlowIndex = get_page_number(m_pOverFlowNotebook, rIdent); - - if (nMainIndex == -1 && nOverFlowIndex == -1) - return -1; - - if (m_bOverFlowBoxIsStart) - { - if (nOverFlowIndex != -1) - return nOverFlowIndex; - else - { - auto nOverFlowLen = m_bOverFlowBoxActive ? gtk_notebook_get_n_pages(m_pOverFlowNotebook) - 1 : 0; - return nMainIndex + nOverFlowLen; - } - } - else - { - if (nMainIndex != -1) - return nMainIndex; - else - { - auto nMainLen = gtk_notebook_get_n_pages(m_pNotebook); - return nOverFlowIndex + nMainLen; - } - } - } - void make_overflow_boxes() { m_pOverFlowBox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL, 0)); @@ -6417,9 +6387,39 @@ public: return nPage != -1 ? get_page_ident(nPage) : OString(); } + virtual int get_page_index(const OString& rIdent) const override + { + auto nMainIndex = get_page_number(m_pNotebook, rIdent); + auto nOverFlowIndex = get_page_number(m_pOverFlowNotebook, rIdent); + + if (nMainIndex == -1 && nOverFlowIndex == -1) + return -1; + + if (m_bOverFlowBoxIsStart) + { + if (nOverFlowIndex != -1) + return nOverFlowIndex; + else + { + auto nOverFlowLen = m_bOverFlowBoxActive ? gtk_notebook_get_n_pages(m_pOverFlowNotebook) - 1 : 0; + return nMainIndex + nOverFlowLen; + } + } + else + { + if (nMainIndex != -1) + return nMainIndex; + else + { + auto nMainLen = gtk_notebook_get_n_pages(m_pNotebook); + return nOverFlowIndex + nMainLen; + } + } + } + virtual weld::Container* get_page(const OString& rIdent) const override { - int nPage = get_page_number(rIdent); + int nPage = get_page_index(rIdent); if (nPage < 0) return nullptr; @@ -6492,7 +6492,7 @@ public: virtual void set_current_page(const OString& rIdent) override { - gint nPage = get_page_number(rIdent); + gint nPage = get_page_index(rIdent); set_current_page(nPage); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits