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

Caolán McNamara caolanm at redhat.com
Thu Aug 15 02:28:58 PDT 2013


 vcl/source/window/layout.cxx |   20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

New commits:
commit 28293f6f28e704ef9aea34c755051b1df005a5d8
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Aug 15 10:22:50 2013 +0100

    calculate outliers before apply min button size
    
    this is more gtk-alike and gives a better balance in e.g.
    insert->envelope/file->new->label and hopefully helps reduce the Polish
    "standard" button width problem in paragraph style dialog
    
    Change-Id: Ibe3b93d45d867f95fd2f6550a3ee954143f690aa

diff --git a/vcl/source/window/layout.cxx b/vcl/source/window/layout.cxx
index 0c03839..4332881 100644
--- a/vcl/source/window/layout.cxx
+++ b/vcl/source/window/layout.cxx
@@ -361,7 +361,7 @@ static long getMaxNonOutlier(const std::vector<long> &rG, long nAvgDimension)
 }
 
 static std::vector<long> setButtonSizes(const std::vector<long> &rG,
-    long nAvgDimension, long nMaxNonOutlier)
+    long nAvgDimension, long nMaxNonOutlier, long nMinWidth)
 {
     std::vector<long> aVec;
     //set everything < 1.5 times the average to the same width, leave the
@@ -371,9 +371,13 @@ static std::vector<long> setButtonSizes(const std::vector<long> &rG,
     {
         long nPrimaryChildDimension = *aI;
         if (nPrimaryChildDimension < nAvgDimension * 1.5)
-            aVec.push_back(nMaxNonOutlier);
+        {
+            aVec.push_back(std::max(nMaxNonOutlier, nMinWidth));
+        }
         else
-            aVec.push_back(nPrimaryChildDimension);
+        {
+            aVec.push_back(std::max(nPrimaryChildDimension, nMinWidth));
+        }
     }
     return aVec;
 }
@@ -405,12 +409,12 @@ VclButtonBox::Requisition VclButtonBox::calculatePrimarySecondaryRequisitions()
             //set the max secondary dimension
             nMainGroupSecondary = std::max(nMainGroupSecondary, getSecondaryDimension(aChildSize));
             //collect the primary dimensions
-            aMainGroupSizes.push_back(std::max(nMinMainGroupPrimary, getPrimaryDimension(aChildSize)));
+            aMainGroupSizes.push_back(getPrimaryDimension(aChildSize));
         }
         else
         {
             nSubGroupSecondary = std::max(nSubGroupSecondary, getSecondaryDimension(aChildSize));
-            aSubGroupSizes.push_back(std::max(nMinSubGroupPrimary, getPrimaryDimension(aChildSize)));
+            aSubGroupSizes.push_back(getPrimaryDimension(aChildSize));
         }
     }
 
@@ -418,8 +422,10 @@ VclButtonBox::Requisition VclButtonBox::calculatePrimarySecondaryRequisitions()
     {
         long nMaxMainDimension = aMainGroupSizes.empty() ? 0 :
             *std::max_element(aMainGroupSizes.begin(), aMainGroupSizes.end());
+        nMaxMainDimension = std::max(nMaxMainDimension, nMinMainGroupPrimary);
         long nMaxSubDimension = aSubGroupSizes.empty() ? 0 :
             *std::max_element(aSubGroupSizes.begin(), aSubGroupSizes.end());
+        nMaxSubDimension = std::max(nMaxSubDimension, nMinSubGroupPrimary);
         long nMaxDimension = std::max(nMaxMainDimension, nMaxSubDimension);
         aReq.m_aMainGroupDimensions.resize(aMainGroupSizes.size(), nMaxDimension);
         aReq.m_aSubGroupDimensions.resize(aSubGroupSizes.size(), nMaxDimension);
@@ -446,9 +452,9 @@ VclButtonBox::Requisition VclButtonBox::calculatePrimarySecondaryRequisitions()
         long nMaxNonOutlier = std::max(nMaxMainNonOutlier, nMaxSubNonOutlier);
 
         aReq.m_aMainGroupDimensions = setButtonSizes(aMainGroupSizes,
-            nAvgDimension, nMaxNonOutlier);
+            nAvgDimension, nMaxNonOutlier, nMinMainGroupPrimary);
         aReq.m_aSubGroupDimensions = setButtonSizes(aSubGroupSizes,
-            nAvgDimension, nMaxNonOutlier);
+            nAvgDimension, nMaxNonOutlier, nMinSubGroupPrimary);
     }
 
     if (!aReq.m_aMainGroupDimensions.empty())


More information about the Libreoffice-commits mailing list