Skip to content

Commit

Permalink
fix #26525: prevented selecting removed elements (2). See PR #13183
Browse files Browse the repository at this point in the history
  • Loading branch information
RomanPudashkin committed Feb 26, 2025
1 parent 6d5490f commit 13a8087
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions src/engraving/dom/score.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1816,19 +1816,20 @@ void Score::doUndoRemoveElement(EngravingItem* element)
}
}

// Checks if the score contains the element and its ancestors
bool Score::containsElement(const EngravingItem* element) const
{
if (!element) {
return false;
}

EngravingItem* parent = element->parentItem();
if (!parent) {
EngravingItem* segment = const_cast<EngravingItem*>(element->findAncestor(ElementType::SEGMENT));
if (!segment) {
return false;
}

std::vector<EngravingItem*> elements;
parent->scanElements(&elements, collectElements, false /*all*/);
segment->scanElements(&elements, collectElements, false /*all*/);

return std::find(elements.cbegin(), elements.cend(), element) != elements.cend();
}
Expand Down Expand Up @@ -3331,10 +3332,11 @@ void Score::padToggle(Pad p, bool toggleForSelectionOnly)
if (!elementsToSelect.empty()) {
std::vector<EngravingItem*> selectList;
for (EngravingItem* e : elementsToSelect) {
if (e && !e->selected()) {
if (e && !e->selected() && containsElement(e)) {
selectList.push_back(e);
}
}

select(selectList, SelectType::ADD, 0);
selection().updateSelectedElements();
}
Expand Down

0 comments on commit 13a8087

Please sign in to comment.