fix #278120: Fix reading/writing slur/tie segments
This commit is contained in:
parent
f42943e90b
commit
acb225d1e2
5 changed files with 5 additions and 52 deletions
|
@ -1330,28 +1330,5 @@ void Slur::setTrack(int n)
|
|||
for (SpannerSegment* ss : spannerSegments())
|
||||
ss->setTrack(n);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// readProperties
|
||||
//---------------------------------------------------------
|
||||
|
||||
bool Slur::readProperties(XmlReader& e)
|
||||
{
|
||||
const QStringRef& tag(e.name());
|
||||
|
||||
if (tag == "SlurSegment") {
|
||||
int idx = e.intAttribute("no", 0);
|
||||
int n = spannerSegments().size();
|
||||
for (int i = n; i < idx; ++i)
|
||||
add(new SlurSegment(score()));
|
||||
SlurSegment* segment = new SlurSegment(score());
|
||||
segment->read(e);
|
||||
add(segment);
|
||||
}
|
||||
else if (!SlurTie::readProperties(e))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -67,8 +67,6 @@ class Slur final : public SlurTie {
|
|||
virtual void setTrack(int val) override;
|
||||
virtual void slurPos(SlurPos*) override;
|
||||
|
||||
bool readProperties(XmlReader&);
|
||||
|
||||
SlurSegment* frontSegment() { return toSlurSegment(Spanner::frontSegment()); }
|
||||
const SlurSegment* frontSegment() const { return toSlurSegment(Spanner::frontSegment()); }
|
||||
SlurSegment* backSegment() { return toSlurSegment(Spanner::backSegment()); }
|
||||
|
|
|
@ -280,7 +280,7 @@ void SlurTieSegment::reset()
|
|||
|
||||
void SlurTieSegment::writeSlur(XmlWriter& xml, int no) const
|
||||
{
|
||||
if (visible()
|
||||
if (visible() && autoplace()
|
||||
&& (color() == Qt::black)
|
||||
&& ups(Grip::START).off.isNull()
|
||||
&& ups(Grip::BEZIER1).off.isNull()
|
||||
|
@ -416,6 +416,10 @@ bool SlurTie::readProperties(XmlReader& e)
|
|||
else if (tag == "lineType")
|
||||
_lineType = e.readInt();
|
||||
else if (tag == "SlurSegment" || tag == "TieSegment") {
|
||||
const int idx = e.intAttribute("no", 0);
|
||||
const int n = int(spannerSegments().size());
|
||||
for (int i = n; i < idx; ++i)
|
||||
add(newSlurTieSegment());
|
||||
SlurTieSegment* s = newSlurTieSegment();
|
||||
s->read(e);
|
||||
add(s);
|
||||
|
|
|
@ -739,29 +739,5 @@ Note* Tie::endNote() const
|
|||
{
|
||||
return toNote(endElement());
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// readProperties
|
||||
//---------------------------------------------------------
|
||||
|
||||
bool Tie::readProperties(XmlReader& e)
|
||||
{
|
||||
const QStringRef& tag(e.name());
|
||||
|
||||
if (tag == "TieSegment") {
|
||||
int idx = e.intAttribute("no", 0);
|
||||
int n = spannerSegments().size();
|
||||
for (int i = n; i < idx; ++i)
|
||||
add(new TieSegment(score()));
|
||||
TieSegment* segment = new TieSegment(score());
|
||||
segment->read(e);
|
||||
add(segment);
|
||||
}
|
||||
else if (!SlurTie::readProperties(e))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -80,8 +80,6 @@ class Tie final : public SlurTie {
|
|||
TieSegment* layoutFor(System*);
|
||||
TieSegment* layoutBack(System*);
|
||||
|
||||
bool readProperties(XmlReader&);
|
||||
|
||||
TieSegment* frontSegment() { return toTieSegment(Spanner::frontSegment()); }
|
||||
const TieSegment* frontSegment() const { return toTieSegment(Spanner::frontSegment()); }
|
||||
TieSegment* backSegment() { return toTieSegment(Spanner::backSegment()); }
|
||||
|
|
Loading…
Reference in a new issue