fix #276126 Voltas are incorrectly positioned
This commit is contained in:
parent
5d52ccf73e
commit
eb1bf102d3
3 changed files with 24 additions and 13 deletions
|
@ -3364,17 +3364,19 @@ System* Score::collectSystem(LayoutContext& lc)
|
||||||
//
|
//
|
||||||
// vertical align volta segments
|
// vertical align volta segments
|
||||||
//
|
//
|
||||||
std::vector<SpannerSegment*> voltaSegments;
|
for (int staffIdx = 0; staffIdx < nstaves(); ++staffIdx) {
|
||||||
for (SpannerSegment* ss : system->spannerSegments()) {
|
std::vector<SpannerSegment*> voltaSegments;
|
||||||
if (ss->isVoltaSegment())
|
for (SpannerSegment* ss : system->spannerSegments()) {
|
||||||
voltaSegments.push_back(ss);
|
if (ss->isVoltaSegment() && ss->staffIdx() == staffIdx)
|
||||||
}
|
voltaSegments.push_back(ss);
|
||||||
if (voltaSegments.size() > 1) {
|
}
|
||||||
qreal y = 0;
|
if (voltaSegments.size() > 1) {
|
||||||
for (SpannerSegment* ss : voltaSegments)
|
qreal y = 0;
|
||||||
y = qMin(y, ss->userOff().y());
|
for (SpannerSegment* ss : voltaSegments)
|
||||||
for (SpannerSegment* ss : voltaSegments)
|
y = qMin(y, ss->userOff().y());
|
||||||
ss->setUserYoffset(y);
|
for (SpannerSegment* ss : voltaSegments)
|
||||||
|
ss->setUserYoffset(y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (Spanner* sp : _unmanagedSpanner) {
|
for (Spanner* sp : _unmanagedSpanner) {
|
||||||
if (sp->tick() >= etick || sp->tick2() < stick)
|
if (sp->tick() >= etick || sp->tick2() < stick)
|
||||||
|
|
|
@ -47,6 +47,14 @@ static const ElementStyle voltaStyle {
|
||||||
{ Sid::voltaHook, Pid::END_HOOK_HEIGHT },
|
{ Sid::voltaHook, Pid::END_HOOK_HEIGHT },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//---------------------------------------------------------
|
||||||
|
// VoltaSegment
|
||||||
|
//---------------------------------------------------------
|
||||||
|
|
||||||
|
VoltaSegment::VoltaSegment(Score* s) : TextLineBaseSegment(s, ElementFlag::MOVABLE | ElementFlag::ON_STAFF)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
// layout
|
// layout
|
||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
|
@ -54,7 +62,7 @@ static const ElementStyle voltaStyle {
|
||||||
void VoltaSegment::layout()
|
void VoltaSegment::layout()
|
||||||
{
|
{
|
||||||
TextLineBaseSegment::layout();
|
TextLineBaseSegment::layout();
|
||||||
autoplaceSpannerSegment(spatium() * .7, Sid::voltaY, Sid::voltaY);
|
autoplaceSpannerSegment(spatium() * 1.0, Sid::voltaY, Sid::voltaY);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
|
@ -75,6 +83,7 @@ Element* VoltaSegment::propertyDelegate(Pid pid)
|
||||||
Volta::Volta(Score* s)
|
Volta::Volta(Score* s)
|
||||||
: TextLineBase(s, ElementFlag::SYSTEM)
|
: TextLineBase(s, ElementFlag::SYSTEM)
|
||||||
{
|
{
|
||||||
|
setPlacement(Placement::ABOVE);
|
||||||
initElementStyle(&voltaStyle);
|
initElementStyle(&voltaStyle);
|
||||||
|
|
||||||
setBeginTextPlace(PlaceText::BELOW);
|
setBeginTextPlace(PlaceText::BELOW);
|
||||||
|
|
|
@ -31,7 +31,7 @@ extern LineSegment* voltaDebug;
|
||||||
|
|
||||||
class VoltaSegment final : public TextLineBaseSegment {
|
class VoltaSegment final : public TextLineBaseSegment {
|
||||||
public:
|
public:
|
||||||
VoltaSegment(Score* s) : TextLineBaseSegment(s, ElementFlag::MOVABLE | ElementFlag::ON_STAFF) {}
|
VoltaSegment(Score* s);
|
||||||
virtual ElementType type() const override { return ElementType::VOLTA_SEGMENT; }
|
virtual ElementType type() const override { return ElementType::VOLTA_SEGMENT; }
|
||||||
virtual VoltaSegment* clone() const override { return new VoltaSegment(*this); }
|
virtual VoltaSegment* clone() const override { return new VoltaSegment(*this); }
|
||||||
Volta* volta() const { return (Volta*)spanner(); }
|
Volta* volta() const { return (Volta*)spanner(); }
|
||||||
|
|
Loading…
Reference in a new issue