diff --git a/src/calcdotsfunctor.cpp b/src/calcdotsfunctor.cpp index b979a50aa66..2be321aa7a9 100644 --- a/src/calcdotsfunctor.cpp +++ b/src/calcdotsfunctor.cpp @@ -60,10 +60,6 @@ FunctorCode CalcDotsFunctor::VisitChord(Chord *chord) FunctorCode CalcDotsFunctor::VisitNote(Note *note) { - // We currently have no dots object with mensural notes - if (note->IsMensuralDur()) { - return FUNCTOR_SIBLINGS; - } if (!note->IsVisible()) { return FUNCTOR_SIBLINGS; } diff --git a/src/preparedatafunctor.cpp b/src/preparedatafunctor.cpp index 2d9226da362..fd69f35d01c 100644 --- a/src/preparedatafunctor.cpp +++ b/src/preparedatafunctor.cpp @@ -1161,17 +1161,6 @@ FunctorCode PrepareLayerElementPartsFunctor::VisitNote(Note *note) } } - // We don't care about flags or dots in mensural notes - if (note->IsMensuralDur()) return FUNCTOR_CONTINUE; - - if (currentStem) { - const bool shouldHaveFlag = ((note->GetActualDur() > DUR_4) && !note->IsInBeam() && !note->GetAncestorFTrem() - && !note->IsChordTone() && !note->IsTabGrpNote()); - currentFlag = this->ProcessFlag(currentFlag, currentStem, shouldHaveFlag); - - if (!chord) note->SetDrawingStem(currentStem); - } - /************ dots ***********/ Dots *currentDots = vrv_cast(note->FindDescendantByType(DOTS, 1)); @@ -1182,6 +1171,17 @@ FunctorCode PrepareLayerElementPartsFunctor::VisitNote(Note *note) } currentDots = this->ProcessDots(currentDots, note, shouldHaveDots); + // We don't care about flags in mensural notes + if (note->IsMensuralDur()) return FUNCTOR_CONTINUE; + + if (currentStem) { + const bool shouldHaveFlag = ((note->GetActualDur() > DUR_4) && !note->IsInBeam() && !note->GetAncestorFTrem() + && !note->IsChordTone() && !note->IsTabGrpNote()); + currentFlag = this->ProcessFlag(currentFlag, currentStem, shouldHaveFlag); + + if (!chord) note->SetDrawingStem(currentStem); + } + /************ Prepare the drawing cue size ************/ PrepareCueSizeFunctor prepareCueSize; diff --git a/src/view_element.cpp b/src/view_element.cpp index 3c698c7add7..93735da393d 100644 --- a/src/view_element.cpp +++ b/src/view_element.cpp @@ -1460,6 +1460,9 @@ void View::DrawNote(DeviceContext *dc, LayerElement *element, Layer *layer, Staf if (note->IsMensuralDur()) { this->DrawMensuralNote(dc, element, layer, staff, measure); + if (note->FindDescendantByType(DOTS)) { + this->DrawLayerChildren(dc, note, layer, staff, measure); + } return; } if (note->IsTabGrpNote()) {