Skip to content

Commit

Permalink
Merge pull request #1587 from MarcSabatella/33476-scan-mmrest
Browse files Browse the repository at this point in the history
fix #33476: select similar and other mmrest issues
  • Loading branch information
wschweer committed Jan 2, 2015
2 parents 5860fe6 + a03cd4b commit 24e0c1f
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 7 deletions.
14 changes: 11 additions & 3 deletions libmscore/measure.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -979,6 +979,15 @@ void Measure::change(Element* o, Element* n)
}
}

//---------------------------------------------------------
// spatiumChanged
//---------------------------------------------------------

void Measure::spatiumChanged(qreal /*oldValue*/, qreal /*newValue*/)
{
setDirty();
}

//-------------------------------------------------------------------
// moveTicks
// Also adjust endBarLine if measure len has changed. For this
Expand Down Expand Up @@ -2401,9 +2410,8 @@ void Measure::scanElements(void* data, void (*func)(void*, Element*), bool all)
func(data, ms->noText());
}

for (Segment* s = first(); s; s = s->next()) {
s->scanElements(data,func,all);
}
for (Segment* s = first(); s; s = s->next())
s->scanElements(data, func, all);
}

//---------------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions libmscore/measure.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ class Measure : public MeasureBase {
virtual void add(Element*) override;
virtual void remove(Element*) override;
virtual void change(Element* o, Element* n) override;
virtual void spatiumChanged(qreal oldValue, qreal newValue) override;

System* system() const { return (System*)parent(); }
QList<MStaff*>* staffList() { return &staves; }
Expand Down
21 changes: 17 additions & 4 deletions libmscore/score.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1772,8 +1772,15 @@ int Score::inputPos() const

void Score::scanElements(void* data, void (*func)(void*, Element*), bool all)
{
for (MeasureBase* m = first(); m; m = m->next())
m->scanElements(data, func, all);
for (MeasureBase* mb = first(); mb; mb = mb->next()) {
mb->scanElements(data, func, all);
if (mb->type() == Element::Type::MEASURE) {
Measure* m = static_cast<Measure*>(mb);
Measure* mmr = m->mmRest();
if (mmr)
mmr->scanElements(data, func, all);
}
}
for (Page* page : pages())
page->scanElements(data, func, all);
}
Expand All @@ -1785,8 +1792,14 @@ void Score::scanElements(void* data, void (*func)(void*, Element*), bool all)
void Score::scanElementsInRange(void* data, void (*func)(void*, Element*), bool all)
{
Segment* startSeg = _selection.startSegment();
for (Segment* s = startSeg; s && s!=_selection.endSegment(); s = s->next1MM()) {
s->scanElements(data,func,all);
for (Segment* s = startSeg; s && s !=_selection.endSegment(); s = s->next1()) {
s->scanElements(data, func, all);
Measure* m = s->measure();
if (m && s == m->first()) {
Measure* mmr = m->mmRest();
if (mmr)
mmr->scanElements(data, func, all);
}
}
}

Expand Down

0 comments on commit 24e0c1f

Please sign in to comment.