[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - svx/source

Maxim Monastirsky momonasmon at gmail.com
Wed Aug 12 06:04:11 PDT 2015


 svx/source/sidebar/PanelLayout.cxx |   12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

New commits:
commit b137ea11db280dec3e38a306f9daf7209eacf18e
Author: Maxim Monastirsky <momonasmon at gmail.com>
Date:   Wed Aug 12 14:52:39 2015 +0300

    Related: tdf#78111 Try to guard against too wide panel layouts
    
    The sidebar has width limit, so a panel shouldn't attempt to
    resize more than that. Otherwise we'll get an endless loop.
    
    (based on e98cf0c63d6c48ca7c1db87d7413d5c419690c76)
    
    Change-Id: Ia36535637e3585595c673c7fc46a1a7b162b74ba
    Reviewed-on: https://gerrit.libreoffice.org/17667
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/svx/source/sidebar/PanelLayout.cxx b/svx/source/sidebar/PanelLayout.cxx
index 591dfe3..90123af 100644
--- a/svx/source/sidebar/PanelLayout.cxx
+++ b/svx/source/sidebar/PanelLayout.cxx
@@ -11,9 +11,12 @@
 #include <com/sun/star/util/URL.hpp>
 #include <com/sun/star/util/URLTransformer.hpp>
 #include <comphelper/processfactory.hxx>
+#include <sfx2/sidebar/Theme.hxx>
 #include <svx/sidebar/PanelLayout.hxx>
 #include <vcl/layout.hxx>
 
+using namespace sfx2::sidebar;
+
 PanelLayout::PanelLayout(vcl::Window* pParent, const OString& rID, const OUString& rUIXMLDescription, const com::sun::star::uno::Reference<com::sun::star::frame::XFrame> &rFrame)
     : Control(pParent)
     , m_bInClose(false)
@@ -40,7 +43,14 @@ void PanelLayout::dispose()
 Size PanelLayout::GetOptimalSize() const
 {
     if (isLayoutEnabled(this))
-        return VclContainer::getLayoutRequisition(*GetWindow(GetWindowType::FirstChild));
+    {
+        Size aSize = VclContainer::getLayoutRequisition(*GetWindow(GetWindowType::FirstChild));
+        sal_Int32 nTabBarWidth = Theme::GetInteger(Theme::Int_TabItemWidth)
+            + Theme::GetInteger(Theme::Int_TabBarLeftPadding)
+            + Theme::GetInteger(Theme::Int_TabBarRightPadding);
+        aSize.Width() = std::min<long>(aSize.Width(), (400 - nTabBarWidth) * GetDPIScaleFactor());
+        return aSize;
+    }
 
     return Control::GetOptimalSize();
 }


More information about the Libreoffice-commits mailing list