sc/source/core/data/dpresfilter.cxx |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

New commits:
commit 7a3be3a229d10665d724ffc215c9dca4ab8dd0bc
Author: Eike Rathke <er...@redhat.com>
Date:   Tue Jun 7 16:30:45 2016 +0200

    Resolves: tdf#89186 descend into dimension children to obtain leaf result
    
    (cherry picked from commit 81f2bbc2fc42688d5f884d3dde58abe4c265694a)
    
    Backported.
    
    Change-Id: Iea6c292c6d7347c4abb221672e583118196e6c1f
    Reviewed-on: https://gerrit.libreoffice.org/26028
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sc/source/core/data/dpresfilter.cxx 
b/sc/source/core/data/dpresfilter.cxx
index a416bc3..cffc05a 100644
--- a/sc/source/core/data/dpresfilter.cxx
+++ b/sc/source/core/data/dpresfilter.cxx
@@ -219,6 +219,24 @@ const ScDPResultTree::ValuesType* 
ScDPResultTree::getResults(
         pMember = itMem->second;
     }
 
+    if (pMember->maValues.empty())
+    {
+        // Descend into dimension member children while there is no result and
+        // exactly one dimension field with exactly one member item, for which
+        // no further constraint (filter) has to match.
+        const MemberNode* pFieldMember = pMember;
+        while (pFieldMember->maChildDimensions.size() == 1)
+        {
+            DimensionsType::const_iterator itDim( 
pFieldMember->maChildDimensions.begin());
+            const DimensionNode* pDim = itDim->second;
+            if (pDim->maChildMembers.size() != 1)
+                break;  // while
+            pFieldMember = pDim->maChildMembers.begin()->second;
+            if (!pFieldMember->maValues.empty())
+                return &pFieldMember->maValues;
+        }
+    }
+
     return &pMember->maValues;
 }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to