Skip to content

Commit

Permalink
fix #28826
Browse files Browse the repository at this point in the history
  • Loading branch information
wschweer committed Aug 5, 2014
1 parent 25addca commit 5373c93
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 19 deletions.
15 changes: 0 additions & 15 deletions libmscore/score.cpp
Expand Up @@ -1390,14 +1390,6 @@ void Score::addElement(Element* element)
_playlistDirty = true;
break;

case Element::Type::CLEF:
{
Clef* clef = static_cast<Clef*>(element);
if (!clef->generated())
updateNoteLines(clef->segment(), clef->track());
}
break;

case Element::Type::TEMPO_TEXT:
{
TempoText* tt = static_cast<TempoText*>(element);
Expand Down Expand Up @@ -1537,13 +1529,6 @@ void Score::removeElement(Element* element)
// TODO: check for tuplet?
}
break;
case Element::Type::CLEF:
{
Clef* clef = static_cast<Clef*>(element);
if (!clef->generated())
updateNoteLines(clef->segment(), clef->track());
}
break;
case Element::Type::TEMPO_TEXT:
{
TempoText* tt = static_cast<TempoText*>(element);
Expand Down
10 changes: 8 additions & 2 deletions libmscore/segment.cpp
Expand Up @@ -36,6 +36,7 @@
#include "timesig.h"
#include "system.h"
#include "xml.h"
#include "undo.h"

namespace Ms {

Expand Down Expand Up @@ -472,8 +473,10 @@ void Segment::add(Element* el)
Q_ASSERT(_segmentType == Type::Clef);
checkElement(el, track);
_elist[track] = el;
if (!el->generated())
if (!el->generated()) {
el->staff()->setClef(static_cast<Clef*>(el));
updateNoteLines(this, el->track());
}
empty = false;
break;

Expand Down Expand Up @@ -598,8 +601,11 @@ void Segment::remove(Element* el)
break;

case Element::Type::CLEF:
if (!el->generated())
if (!el->generated()) {
el->staff()->removeClef(static_cast<Clef*>(el));
updateNoteLines(this, el->track());
}
// fall through

case Element::Type::BAR_LINE:
case Element::Type::BREATH:
Expand Down
5 changes: 4 additions & 1 deletion libmscore/staff.cpp
Expand Up @@ -234,6 +234,8 @@ ClefTypeList Staff::initialClefTypeList() const

void Staff::setClef(Clef* clef)
{
if (clef->generated())
return;
int tick = clef->segment()->tick();
for (Segment* s = clef->segment()->next(); s && s->tick() == tick; s = s->next()) {
if (s->segmentType() == Segment::Type::Clef && s->element(clef->track())) {
Expand All @@ -250,8 +252,9 @@ void Staff::setClef(Clef* clef)

void Staff::removeClef(Clef* clef)
{
if (clef->generated())
return;
int tick = clef->segment()->tick();

for (Segment* s = clef->segment()->next(); s && s->tick() == tick; s = s->next()) {
if (s->segmentType() == Segment::Type::Clef && s->element(clef->track())) {
// removal of this clef has no effect on the clefs list
Expand Down
1 change: 0 additions & 1 deletion libmscore/undo.cpp
Expand Up @@ -3263,7 +3263,6 @@ void ChangeClefType::flip()

clef->setConcertClef(concertClef);
clef->setTransposingClef(transposingClef);
//?? clef->setClefType(clef->concertPitch() ? concertClef : transposingClef);

clef->staff()->setClef(clef);
Segment* segment = clef->segment();
Expand Down

0 comments on commit 5373c93

Please sign in to comment.