Kaydet (Commit) a8aaffa6 authored tarafından Mike Kaganski's avatar Mike Kaganski

tdf#119146: fix populating maCurrentSubsets

Regression from commit 4600b07c

Before the mentioned commit, creating a subset X, and then adding
sub-subsets until all the subset is excluded, had left the subset X
with two *empty* nodes in maCurrentSubsets, 1st of them having both
mnStartIndex and mnEndIndex equal to maSubset.mnStartIndex, and 2nd
having both mnStartIndex and mnEndIndex equal to maSubset.mnEndIndex.

The commit above changed that to adding maSubset to maCurrentSubsets
in the beginning of each exclusion, which finally resulted in a messy
maCurrentSubsets with multiple duplicating nodes effectively covering
all maSubset. That resulted in the item as a whole handled *besides*
the sub-subsets.

This commit (1) avoids adding extra maSubset to maCurrentSubsets, and
(2) adds the two empty nodes in case all the subset has been excluded
by its sub-subsets.

Change-Id: I7fc5f2d0b6ecf4f9247351da3a2746032150557b
Reviewed-on: https://gerrit.libreoffice.org/59948
Tested-by: Jenkins
Reviewed-by: 's avatarMike Kaganski <mike.kaganski@collabora.com>
üst 81a68350
......@@ -214,6 +214,25 @@ namespace slideshow
maCurrentSubsets.insert(maCurrentSubsets.end(), aNodesToAppend.begin(),
aNodesToAppend.end());
// Excluding subsets must not leave an absolutely empty maCurrentSubsets, because it
// would mean "non-subsetting" mode unconditionally, with whole object added to subsets.
// So to indicate a subset with all parts excluded, add two empty subsets (starting and
// ending).
if (maCurrentSubsets.empty())
{
if (maSubset.isEmpty())
{
maCurrentSubsets.emplace_back(0, 0);
maCurrentSubsets.emplace_back(maActionClassVector.size(),
maActionClassVector.size());
}
else
{
maCurrentSubsets.emplace_back(maSubset.getStartIndex(),
maSubset.getStartIndex());
maCurrentSubsets.emplace_back(maSubset.getEndIndex(), maSubset.getEndIndex());
}
}
}
void DrawShapeSubsetting::updateSubsets()
......@@ -276,10 +295,10 @@ namespace slideshow
void DrawShapeSubsetting::initCurrentSubsets()
{
// only add subset to vector, if it's not empty - that's
// only add subset to vector, if vector is empty, and subset is not empty - that's
// because the vector's content is later literally used
// for e.g. painting.
if( !maSubset.isEmpty() )
if (maCurrentSubsets.empty() && !maSubset.isEmpty())
maCurrentSubsets.push_back( maSubset );
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment