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

Noel Grandin noel at peralex.com
Tue May 24 13:07:29 UTC 2016


 include/o3tl/enumarray.hxx    |    1 +
 include/vcl/vclenum.hxx       |    7 ++++---
 vcl/source/window/builder.cxx |    8 ++++----
 vcl/source/window/layout.cxx  |   14 ++++++++------
 vcl/source/window/window.cxx  |    2 +-
 5 files changed, 18 insertions(+), 14 deletions(-)

New commits:
commit fe0bba96ac0682eeba1757ede42b5fdef22764b8
Author: Noel Grandin <noel at peralex.com>
Date:   Tue May 24 09:21:33 2016 +0200

    Convert VclPackType to scoped enum
    
    Change-Id: I5bcc4f8686c1ce5bf7def948ce50837fa542786f
    Reviewed-on: https://gerrit.libreoffice.org/25394
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noelgrandin at gmail.com>

diff --git a/include/o3tl/enumarray.hxx b/include/o3tl/enumarray.hxx
index 0e88142..766d967 100644
--- a/include/o3tl/enumarray.hxx
+++ b/include/o3tl/enumarray.hxx
@@ -22,6 +22,7 @@
 
 #include <iterator>
 #include <type_traits>
+#include <cassert>
 
 namespace o3tl {
 
diff --git a/include/vcl/vclenum.hxx b/include/vcl/vclenum.hxx
index 28a6888..45f9ed2 100644
--- a/include/vcl/vclenum.hxx
+++ b/include/vcl/vclenum.hxx
@@ -107,10 +107,11 @@ enum VclAlign
     VCL_ALIGN_CENTER
 };
 
-enum VclPackType
+enum class VclPackType
 {
-    VCL_PACK_START = 0,
-    VCL_PACK_END = 1
+    Start = 0,
+    End = 1,
+    LAST = End
 };
 
 // Return Values from Dialog::Execute
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 2a466ad..17c3b8f 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -1997,14 +1997,14 @@ bool VclBuilder::sortIntoBestTabTraversalOrder::operator()(const vcl::Window *pA
             return false;
     }
     //honour relative box positions with pack group, (numerical order is reversed
-    //for VCL_PACK_END, they are packed from the end back, but here we need
+    //for VclPackType::End, they are packed from the end back, but here we need
     //them in visual layout order so that tabbing works as expected)
     sal_Int32 nPackA = m_pBuilder->get_window_packing_data(pA).m_nPosition;
     sal_Int32 nPackB = m_pBuilder->get_window_packing_data(pB).m_nPosition;
     if (nPackA < nPackB)
-        return ePackA == VCL_PACK_START;
+        return ePackA == VclPackType::Start;
     if (nPackA > nPackB)
-        return ePackA != VCL_PACK_START;
+        return ePackA != VclPackType::Start;
     //sort labels of Frames before body
     if (pA->GetParent() == pB->GetParent())
     {
@@ -2956,7 +2956,7 @@ void VclBuilder::applyPackingProperty(vcl::Window *pCurrent,
             }
             else if (sKey == "pack-type")
             {
-                VclPackType ePackType = (!sValue.isEmpty() && (sValue[0] == 'e' || sValue[0] == 'E')) ? VCL_PACK_END : VCL_PACK_START;
+                VclPackType ePackType = (!sValue.isEmpty() && (sValue[0] == 'e' || sValue[0] == 'E')) ? VclPackType::End : VclPackType::Start;
                 pCurrent->set_pack_type(ePackType);
             }
             else if (sKey == "left-attach")
diff --git a/vcl/source/window/layout.cxx b/vcl/source/window/layout.cxx
index a376138..5e82e4a 100644
--- a/vcl/source/window/layout.cxx
+++ b/vcl/source/window/layout.cxx
@@ -8,6 +8,8 @@
  */
 
 #include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <o3tl/enumarray.hxx>
+#include <o3tl/enumrange.hxx>
 #include <vcl/dialog.hxx>
 #include <vcl/layout.hxx>
 #include <vcl/msgbox.hxx>
@@ -231,25 +233,25 @@ void VclBox::setAllocation(const Size &rAllocation)
     }
 
     //Split into those we pack from the start onwards, and those we pack from the end backwards
-    std::vector<vcl::Window*> aWindows[2];
+    o3tl::enumarray<VclPackType,std::vector<vcl::Window*>> aWindows;
     for (vcl::Window *pChild = GetWindow(GetWindowType::FirstChild); pChild; pChild = pChild->GetWindow(GetWindowType::Next))
     {
         if (!pChild->IsVisible())
             continue;
 
-        sal_Int32 ePacking = pChild->get_pack_type();
+        VclPackType ePacking = pChild->get_pack_type();
         aWindows[ePacking].push_back(pChild);
     }
 
     //See VclBuilder::sortIntoBestTabTraversalOrder for why they are in visual
     //order under the parent which requires us to reverse them here to
     //pack from the end back
-    std::reverse(aWindows[VCL_PACK_END].begin(),aWindows[VCL_PACK_END].end());
+    std::reverse(aWindows[VclPackType::End].begin(),aWindows[VclPackType::End].end());
 
-    for (sal_Int32 ePackType = VCL_PACK_START; ePackType <= VCL_PACK_END; ++ePackType)
+    for (VclPackType ePackType : o3tl::enumrange<VclPackType>())
     {
         Point aPos(0, 0);
-        if (ePackType == VCL_PACK_END)
+        if (ePackType == VclPackType::End)
         {
             long nPrimaryCoordinate = getPrimaryCoordinate(aPos);
             setPrimaryCoordinate(aPos, nPrimaryCoordinate + nAllocPrimaryDimension);
@@ -297,7 +299,7 @@ void VclBox::setAllocation(const Size &rAllocation)
             }
 
             long nDiff = getPrimaryDimension(aBoxSize) + m_nSpacing;
-            if (ePackType == VCL_PACK_START)
+            if (ePackType == VclPackType::Start)
                 setPrimaryCoordinate(aPos, nPrimaryCoordinate + nDiff);
             else
             {
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index 547bc2c..623275b 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -641,7 +641,7 @@ WindowImpl::WindowImpl( WindowType nType )
     meAlwaysInputMode                   = AlwaysInputNone;           // neither AlwaysEnableInput nor AlwaysDisableInput called
     meHalign                            = VCL_ALIGN_FILL;
     meValign                            = VCL_ALIGN_FILL;
-    mePackType                          = VCL_PACK_START;
+    mePackType                          = VclPackType::Start;
     mnPadding                           = 0;
     mnGridHeight                        = 1;
     mnGridLeftAttach                    = -1;


More information about the Libreoffice-commits mailing list