include/vcl/layout.hxx | 4 +++- vcl/source/window/layout.cxx | 28 ++++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-)
New commits: commit 0491fb82f5f264ae327ea580c0ffb8a099a73343 Author: Caolán McNamara <[email protected]> AuthorDate: Tue May 12 12:38:31 2020 +0100 Commit: Caolán McNamara <[email protected]> CommitDate: Tue May 12 16:32:23 2020 +0200 make VclPaned::set_position take effect Change-Id: Id4ae096b413196cfb7118cd3a09a3f0a6c333f01 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94053 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/include/vcl/layout.hxx b/include/vcl/layout.hxx index 4eb1d72bc464..8a5b881644e4 100644 --- a/include/vcl/layout.hxx +++ b/include/vcl/layout.hxx @@ -386,7 +386,7 @@ public: virtual ~VclPaned() override; virtual void dispose() override; long get_position() const { return m_nPosition; } - void set_position(long nPosition) { m_nPosition = nPosition; } + virtual void set_position(long nPosition) { m_nPosition = nPosition; } }; class VclVPaned final : public VclPaned @@ -400,6 +400,7 @@ public: virtual ~VclVPaned() override; virtual Size calculateRequisition() const override; virtual void setAllocation(const Size &rAllocation) override; + virtual void set_position(long nPosition) override; }; class VclHPaned final : public VclPaned @@ -413,6 +414,7 @@ public: virtual ~VclHPaned() override; virtual Size calculateRequisition() const override; virtual void setAllocation(const Size &rAllocation) override; + virtual void set_position(long nPosition) override; }; class VclFrame final : public VclBin diff --git a/vcl/source/window/layout.cxx b/vcl/source/window/layout.cxx index 22f8f12ad13a..9225c27b05a8 100644 --- a/vcl/source/window/layout.cxx +++ b/vcl/source/window/layout.cxx @@ -2547,7 +2547,7 @@ void VclVPaned::arrange(const Size& rAllocation, long nFirstHeight, long nSecond { Point aSplitterPos(0, aFirstChildSize.Height()); setLayoutAllocation(*m_pSplitter, aSplitterPos, aSplitterSize); - set_position(aSplitterPos.Y() + aSplitterSize.Height() / 2); + m_nPosition = aSplitterPos.Y() + aSplitterSize.Height() / 2; } else if (nElement == 1) { @@ -2563,6 +2563,18 @@ void VclVPaned::arrange(const Size& rAllocation, long nFirstHeight, long nSecond } } +void VclVPaned::set_position(long nPosition) +{ + VclPaned::set_position(nPosition); + + Size aAllocation(GetSizePixel()); + Size aSplitterSize(m_pSplitter->GetSizePixel()); + + nPosition -= aSplitterSize.Height() / 2; + + arrange(aAllocation, nPosition, aAllocation.Height() - nPosition - aSplitterSize.Height()); +} + void VclVPaned::setAllocation(const Size& rAllocation) { //supporting "shrink" could be done by adjusting the allowed drag rectangle @@ -2654,7 +2666,7 @@ void VclHPaned::arrange(const Size& rAllocation, long nFirstWidth, long nSecondW { Point aSplitterPos(aFirstChildSize.Width(), 0); setLayoutAllocation(*m_pSplitter, aSplitterPos, aSplitterSize); - set_position(aSplitterPos.X() + aSplitterSize.Width() / 2); + m_nPosition = aSplitterPos.X() + aSplitterSize.Width() / 2; } else if (nElement == 1) { @@ -2670,6 +2682,18 @@ void VclHPaned::arrange(const Size& rAllocation, long nFirstWidth, long nSecondW } } +void VclHPaned::set_position(long nPosition) +{ + VclPaned::set_position(nPosition); + + Size aAllocation(GetSizePixel()); + Size aSplitterSize(m_pSplitter->GetSizePixel()); + + nPosition -= aSplitterSize.Width() / 2; + + arrange(aAllocation, nPosition, aAllocation.Width() - nPosition - aSplitterSize.Width()); +} + void VclHPaned::setAllocation(const Size& rAllocation) { //supporting "shrink" could be done by adjusting the allowed drag rectangle _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
