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