fixed beam parent
This commit is contained in:
parent
0627e89d27
commit
761af43d6d
15 changed files with 35 additions and 26 deletions
|
@ -195,7 +195,7 @@ QVariantMap EngravingElementsModel::makeData(const Ms::EngravingObject* el) cons
|
|||
QString info = name + ": ";
|
||||
info += "children: " + QString::number(el->children().size());
|
||||
if (!el->isDummy()) {
|
||||
info += ", treechildren: " + QString::number(el->treeChildCount());
|
||||
//info += ", treechildren: " + QString::number(el->treeChildCount());
|
||||
}
|
||||
info += "\n";
|
||||
if (el->isEngravingItem()) {
|
||||
|
@ -207,9 +207,9 @@ QVariantMap EngravingElementsModel::makeData(const Ms::EngravingObject* el) cons
|
|||
d["selected"] = elementsProvider()->isSelected(el);
|
||||
d["info"] = info;
|
||||
|
||||
if (el->children().size() != size_t(el->treeChildCount())) {
|
||||
d["color"] = "#ff0000";
|
||||
}
|
||||
// if (el->children().size() != size_t(el->treeChildCount())) {
|
||||
// d["color"] = "#ff0000";
|
||||
// }
|
||||
|
||||
return d;
|
||||
}
|
||||
|
|
|
@ -2166,7 +2166,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e, ReadContext& ctx
|
|||
} else if (tag == "slashStyle") {
|
||||
m->setStaffStemless(staffIdx, e.readInt());
|
||||
} else if (tag == "Beam") {
|
||||
Beam* beam = Factory::createBeam(ctx.dummy(), ctx.dummy()->score());
|
||||
Beam* beam = Factory::createBeam(ctx.dummy()->system());
|
||||
beam->setTrack(e.track());
|
||||
beam->read(e);
|
||||
beam->moveToDummy();
|
||||
|
@ -2950,7 +2950,7 @@ Score::FileError Read114::read114(MasterScore* masterScore, XmlReader& e, ReadCo
|
|||
masterScore->_excerpts.append(ex);
|
||||
}
|
||||
} else if (tag == "Beam") {
|
||||
Beam* beam = Factory::createBeam(masterScore->dummy(), masterScore);
|
||||
Beam* beam = Factory::createBeam(masterScore->dummy()->system());
|
||||
beam->read(e);
|
||||
beam->moveToDummy();
|
||||
// _beams.append(beam);
|
||||
|
|
|
@ -2949,7 +2949,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e, ReadContext& ctx
|
|||
} else if (tag == "slashStyle") {
|
||||
m->setStaffStemless(staffIdx, e.readInt());
|
||||
} else if (tag == "Beam") {
|
||||
Beam* beam = Factory::createBeam(ctx.dummy(), ctx.dummy()->score());
|
||||
Beam* beam = Factory::createBeam(ctx.dummy()->system());
|
||||
beam->setTrack(e.track());
|
||||
beam->read(e);
|
||||
beam->moveToDummy();
|
||||
|
|
|
@ -84,7 +84,6 @@ Err EngravingProject::setupMasterScore()
|
|||
engravingElementsProvider()->clearStatistic();
|
||||
Err err = doSetupMasterScore(m_masterScore);
|
||||
engravingElementsProvider()->printStatistic("=== Update and Layout ===");
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -127,7 +126,6 @@ Err EngravingProject::loadMscz(const MscReader& reader, bool ignoreVersionError)
|
|||
engravingElementsProvider()->clearStatistic();
|
||||
Ms::Score::FileError err = m_masterScore->loadMscz(reader, ignoreVersionError);
|
||||
engravingElementsProvider()->printStatistic("=== Load ===");
|
||||
|
||||
return scoreFileErrorToErr(err);
|
||||
}
|
||||
|
||||
|
|
|
@ -169,7 +169,7 @@ void LayoutBeams::breakCrossMeasureBeams(const LayoutContext& ctx, Measure* meas
|
|||
|
||||
Beam* newBeam = nullptr;
|
||||
if (nextElements.size() > 1) {
|
||||
newBeam = Factory::createBeam(ctx.score()->dummy(), ctx.score());
|
||||
newBeam = Factory::createBeam(ctx.score()->dummy()->system());
|
||||
newBeam->setGenerated(true);
|
||||
newBeam->setTrack(track);
|
||||
}
|
||||
|
@ -244,7 +244,7 @@ void LayoutBeams::beamGraceNotes(Score* score, Chord* mainNote, bool after)
|
|||
} else {
|
||||
beam = a1->beam();
|
||||
if (beam == 0 || beam->elements().front() != a1) {
|
||||
beam = Factory::createBeam(score->dummy(), score);
|
||||
beam = Factory::createBeam(score->dummy()->system());
|
||||
beam->setGenerated(true);
|
||||
beam->setTrack(mainNote->track());
|
||||
a1->replaceBeam(beam);
|
||||
|
@ -431,7 +431,7 @@ void LayoutBeams::createBeams(Score* score, LayoutContext& lc, Measure* measure)
|
|||
} else {
|
||||
beam = a1->beam();
|
||||
if (beam == 0 || beam->elements().front() != a1) {
|
||||
beam = Factory::createBeam(score->dummy(), score);
|
||||
beam = Factory::createBeam(score->dummy()->system());
|
||||
beam->setGenerated(true);
|
||||
beam->setTrack(track);
|
||||
a1->replaceBeam(beam);
|
||||
|
|
|
@ -75,10 +75,9 @@ struct BeamFragment {
|
|||
// Beam
|
||||
//---------------------------------------------------------
|
||||
|
||||
Beam::Beam(EngravingItem* parent, Score* score)
|
||||
Beam::Beam(System* parent)
|
||||
: EngravingItem(ElementType::BEAM, parent)
|
||||
{
|
||||
EngravingObject::setScore(score);
|
||||
initElementStyle(&beamStyle);
|
||||
}
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ class Beam final : public EngravingItem
|
|||
qreal slope { 0.0 };
|
||||
|
||||
friend class mu::engraving::Factory;
|
||||
Beam(EngravingItem* parent, Ms::Score* score);
|
||||
Beam(System* parent);
|
||||
Beam(const Beam&);
|
||||
|
||||
void layout2(std::vector<ChordRest*>, SpannerSegmentType, int frag);
|
||||
|
|
|
@ -96,6 +96,10 @@ EngravingObject::EngravingObject(const EngravingObject& se)
|
|||
|
||||
EngravingObject::~EngravingObject()
|
||||
{
|
||||
for (EngravingObject* c : m_children) {
|
||||
c->m_parent = nullptr;
|
||||
}
|
||||
|
||||
if (!isDummy() && !isScore()) {
|
||||
Score* sc = score();
|
||||
IF_ASSERT_FAILED(sc) {
|
||||
|
@ -670,6 +674,10 @@ void EngravingObject::addChild(EngravingObject* o)
|
|||
|
||||
void EngravingObject::removeChild(EngravingObject* o)
|
||||
{
|
||||
IF_ASSERT_FAILED(o->m_parent == this) {
|
||||
return;
|
||||
}
|
||||
o->m_parent = nullptr;
|
||||
m_children.remove(o);
|
||||
}
|
||||
|
||||
|
|
|
@ -418,16 +418,16 @@ CREATE_ITEM_IMPL(BarLine, ElementType::BAR_LINE, Segment)
|
|||
COPY_ITEM_IMPL(BarLine)
|
||||
MAKE_ITEM_IMPL(BarLine, Segment)
|
||||
|
||||
Beam* Factory::createBeam(EngravingItem * parent, Score * score)
|
||||
Beam* Factory::createBeam(System * parent)
|
||||
{
|
||||
Beam* b = new Beam(parent, score);
|
||||
Beam* b = new Beam(parent);
|
||||
b->setup();
|
||||
return b;
|
||||
}
|
||||
|
||||
std::shared_ptr<Beam> Factory::makeBeam(EngravingItem* parent, Score* score)
|
||||
std::shared_ptr<Beam> Factory::makeBeam(System* parent)
|
||||
{
|
||||
return std::shared_ptr<Beam>(createBeam(parent, score));
|
||||
return std::shared_ptr<Beam>(createBeam(parent));
|
||||
}
|
||||
|
||||
CREATE_ITEM_IMPL(Bend, ElementType::BEND, Note)
|
||||
|
|
|
@ -61,9 +61,8 @@ public:
|
|||
static Ms::BarLine* copyBarLine(const Ms::BarLine& src);
|
||||
static std::shared_ptr<Ms::BarLine> makeBarLine(Ms::Segment* parent);
|
||||
|
||||
//! NOTE Ms::Score* is needed temporarily
|
||||
static Ms::Beam* createBeam(Ms::EngravingItem* parent, Ms::Score* score);
|
||||
static std::shared_ptr<Ms::Beam> makeBeam(Ms::EngravingItem* parent, Ms::Score* score);
|
||||
static Ms::Beam* createBeam(Ms::System* parent);
|
||||
static std::shared_ptr<Ms::Beam> makeBeam(Ms::System* parent);
|
||||
|
||||
static Ms::Bend* createBend(Ms::Note* parent);
|
||||
static std::shared_ptr<Ms::Bend> makeBend(Ms::Note* parent);
|
||||
|
|
|
@ -2514,7 +2514,7 @@ void Measure::readVoice(XmlReader& e, int staffIdx, bool irregular)
|
|||
}
|
||||
e.readNext();
|
||||
} else if (tag == "Beam") {
|
||||
Beam* beam = Factory::createBeam(score()->dummy(), score());
|
||||
Beam* beam = Factory::createBeam(score()->dummy()->system());
|
||||
beam->setTrack(e.track());
|
||||
beam->read(e);
|
||||
beam->moveToDummy();
|
||||
|
|
|
@ -437,7 +437,7 @@ bool Score::pasteStaff(XmlReader& e, Segment* dst, int dstStaff, Fraction scale)
|
|||
breath->setParent(segment);
|
||||
undoChangeElement(segment->element(e.track()), breath);
|
||||
} else if (tag == "Beam") {
|
||||
Beam* beam = Factory::createBeam(this->dummy(), this);
|
||||
Beam* beam = Factory::createBeam(this->dummy()->system());
|
||||
beam->setTrack(e.track());
|
||||
beam->read(e);
|
||||
beam->moveToDummy();
|
||||
|
|
|
@ -34,7 +34,8 @@ RootItem::RootItem(Score* score)
|
|||
|
||||
RootItem::~RootItem()
|
||||
{
|
||||
delete m_dummy;
|
||||
//! TODO Please don't remove (igor.korsukov@gmail.com)
|
||||
// delete m_dummy;
|
||||
}
|
||||
|
||||
compat::DummyElement* RootItem::dummy() const
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#include "accessibility/accessibleitem.h"
|
||||
#include "libmscore/page.h"
|
||||
#include "libmscore/score.h"
|
||||
|
||||
#include "log.h"
|
||||
|
||||
|
@ -46,6 +47,9 @@ void DebugPaint::paintPageDiagnostic(mu::draw::Painter& painter, Ms::Page* page)
|
|||
// Get children
|
||||
const mu::diagnostics::EngravingObjectList& elements = elementsProvider()->elements();
|
||||
|
||||
Ms::Score* score = page->score();
|
||||
RootItem* root = score->rootItem();
|
||||
|
||||
std::list<const Ms::EngravingItem*> children;
|
||||
for (const Ms::EngravingObject* el : elements) {
|
||||
if (!el->isEngravingItem()) {
|
||||
|
|
|
@ -1809,7 +1809,7 @@ static void handleBeamAndStemDir(ChordRest* cr, const Beam::Mode bm, const Direc
|
|||
removeBeam(beam);
|
||||
}
|
||||
// create a new beam
|
||||
beam = Factory::createBeam(cr->score()->dummy(), cr->score());
|
||||
beam = Factory::createBeam(cr->score()->dummy()->system());
|
||||
beam->setTrack(cr->track());
|
||||
beam->setBeamDirection(sd);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue