sc/source/core/data/dpresfilter.cxx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
New commits: commit f6b76c9d7fa989ac9475ff6d2ab45c257f96ad3e 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/26026 Reviewed-by: Eike Rathke <er...@redhat.com> Tested-by: Eike Rathke <er...@redhat.com> diff --git a/sc/source/core/data/dpresfilter.cxx b/sc/source/core/data/dpresfilter.cxx index f66e7f1..bed460d 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