Skip to content

Commit b79bdb6

Browse files
Merge pull request #29786 from mike-spa/portStuff
Port stuff
2 parents cc53447 + 5aff5ac commit b79bdb6

38 files changed

+179
-269
lines changed

src/engraving/api/v1/cursor.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,8 @@ void Cursor::add(EngravingItem* wrapped)
363363
s->setParent(curElement);
364364
m_score->undoAddElement(s);
365365
}
366-
} // FALLTHROUGH
366+
[[fallthrough]];
367+
}
367368
case ElementType::FINGERING:
368369
case ElementType::BEND:
369370
case ElementType::NOTEHEAD: {

src/engraving/data/harmony_to_diagram.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32902,14 +32902,14 @@
3290232902
<marker>circle</marker>
3290332903
</string>
3290432904
<string no="4">
32905-
<marker>circle</marker>
32905+
<dot fret="2">normal</dot>
3290632906
</string>
3290732907
<string no="5">
3290832908
<marker>circle</marker>
3290932909
</string>
3291032910
</fretDiagram>
3291132911
</FretDiagram>
32912-
<pattern>O[2-O][2-O]OOO</pattern>
32912+
<pattern>O[2-O][2-O]O[2-O]O</pattern>
3291332913
<Harmony>
3291432914
<name>c#m7b5/e</name>
3291532915
</Harmony>

src/engraving/dom/anchors.cpp

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -158,18 +158,17 @@ void MoveElementAnchors::moveElementAnchors(EngravingItem* element, KeyboardKey
158158
return;
159159
}
160160

161-
bool leftRightKey = key == Key_Left || key == Key_Right;
162161
bool altMod = mod & AltModifier;
163-
bool shiftMod = mod & ShiftModifier;
164162

165-
bool changeAnchorType = shiftMod && altMod && leftRightKey && canAnchorToEndOfPrevious(element);
166163
bool anchorToEndOfPrevious = element->getProperty(Pid::ANCHOR_TO_END_OF_PREVIOUS).toBool();
167-
if (changeAnchorType) {
164+
bool changeAnchorType = altMod && canAnchorToEndOfPrevious(element);
165+
bool resetAnchorType = !altMod && anchorToEndOfPrevious;
166+
if (changeAnchorType || resetAnchorType) {
168167
element->undoChangeProperty(Pid::ANCHOR_TO_END_OF_PREVIOUS, !anchorToEndOfPrevious,
169168
element->propertyFlags(Pid::ANCHOR_TO_END_OF_PREVIOUS));
170169

171-
bool doesntNeedMoveSeg = ((key == Key_Left && anchorToEndOfPrevious) || (key == Key_Right && !anchorToEndOfPrevious));
172-
if (doesntNeedMoveSeg) {
170+
bool needMoveSeg = (key == Key_Left && anchorToEndOfPrevious) || (key == Key_Right && !anchorToEndOfPrevious);
171+
if (!needMoveSeg) {
173172
checkMeasureBoundariesAndMoveIfNeed(element);
174173
return;
175174
}
@@ -199,7 +198,7 @@ void MoveElementAnchors::checkMeasureBoundariesAndMoveIfNeed(EngravingItem* elem
199198
Measure* curMeasure = curSeg->measure();
200199
Measure* prevMeasure = curMeasure->prevMeasure();
201200
bool anchorToEndOfPrevious = element->getProperty(Pid::ANCHOR_TO_END_OF_PREVIOUS).toBool();
202-
bool needMoveToNext = curTick == curMeasure->endTick() && anchorToEndOfPrevious;
201+
bool needMoveToNext = curTick == curMeasure->endTick() && !anchorToEndOfPrevious;
203202
bool needMoveToPrevious = curSeg->rtick().isZero() && anchorToEndOfPrevious && prevMeasure;
204203

205204
if (!needMoveToPrevious && !needMoveToNext) {
@@ -251,14 +250,6 @@ void MoveElementAnchors::moveElementAnchorsOnDrag(EngravingItem* element, EditDa
251250

252251
void MoveElementAnchors::moveSegment(EngravingItem* element, bool forward)
253252
{
254-
if (canAnchorToEndOfPrevious(element)) {
255-
bool cachedAnchorToEndOfPrevious = element->getProperty(Pid::ANCHOR_TO_END_OF_PREVIOUS).toBool();
256-
element->undoResetProperty(Pid::ANCHOR_TO_END_OF_PREVIOUS);
257-
if (cachedAnchorToEndOfPrevious && forward) {
258-
return;
259-
}
260-
}
261-
262253
Segment* curSeg = toSegment(element->parentItem());
263254
Segment* newSeg = getNewSegment(element, curSeg, forward);
264255

src/engraving/dom/box.cpp

Lines changed: 26 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,9 @@ FBox::FBox(System* parent)
706706
resetProperty(Pid::BOTTOM_MARGIN);
707707
resetProperty(Pid::TOP_GAP);
708708
resetProperty(Pid::BOTTOM_GAP);
709+
resetProperty(Pid::EXCLUDE_FROM_OTHER_PARTS);
710+
resetProperty(Pid::APPEARANCE_LINKED_TO_MASTER);
711+
resetProperty(Pid::POSITION_LINKED_TO_MASTER);
709712
}
710713

711714
void FBox::init()
@@ -722,7 +725,7 @@ void FBox::init()
722725

723726
StringList diagramsNamesInScore;
724727
std::vector<EngravingItem*> harmonyOrDiagramsInScore;
725-
for (mu::engraving::Segment* segment = masterScore()->firstSegment(mu::engraving::SegmentType::ChordRest); segment;
728+
for (mu::engraving::Segment* segment = score()->firstSegment(mu::engraving::SegmentType::ChordRest); segment;
726729
segment = segment->next1(mu::engraving::SegmentType::ChordRest)) {
727730
for (EngravingItem* item : segment->annotations()) {
728731
if (!item || !item->part()) {
@@ -749,6 +752,8 @@ void FBox::init()
749752
}
750753
}
751754

755+
m_diagramsOrderInScore = diagramsNamesInScore;
756+
752757
for (size_t i = 0; i < oldDiagramsNames.size(); ++i) {
753758
String oldName = oldDiagramsNames[i];
754759
if (!muse::contains(diagramsNamesInScore, oldName)) {
@@ -766,19 +771,6 @@ void FBox::init()
766771
score()->undo(new AddFretDiagramToFretBox(newDiagram, idx));
767772
}
768773
}
769-
770-
StringList currentDiagrams;
771-
for (EngravingItem* item : el()) {
772-
currentDiagrams.push_back(toFretDiagram(item)->harmonyText().toLower());
773-
}
774-
775-
if (!m_invisibleDiagrams.empty()) {
776-
updateInvisibleDiagrams(currentDiagrams);
777-
}
778-
779-
if (!m_diagramsOrder.empty()) {
780-
updateDiagramsOrder(currentDiagrams);
781-
}
782774
}
783775

784776
void FBox::add(EngravingItem* e)
@@ -848,9 +840,7 @@ PropertyValue FBox::getProperty(Pid propertyId) const
848840
case Pid::RIGHT_MARGIN:
849841
return m_contentAlignmentH == AlignH::RIGHT ? VBox::getProperty(propertyId) : PropertyValue();
850842
case Pid::FRET_FRAME_DIAGRAMS_ORDER:
851-
return !m_diagramsOrder.empty() ? m_diagramsOrder.join(FRET_BOX_DIAGRAMS_SEPARATOR) : PropertyValue();
852-
case Pid::FRET_FRAME_INVISIBLE_DIAGRAMS:
853-
return !m_invisibleDiagrams.empty() ? m_invisibleDiagrams.join(FRET_BOX_DIAGRAMS_SEPARATOR) : PropertyValue();
843+
return diagramsOrder().join(FRET_BOX_DIAGRAMS_SEPARATOR);
854844
default:
855845
return VBox::getProperty(propertyId);
856846
}
@@ -880,10 +870,7 @@ bool FBox::setProperty(Pid propertyId, const PropertyValue& val)
880870
resetProperty(Pid::RIGHT_MARGIN);
881871
break;
882872
case Pid::FRET_FRAME_DIAGRAMS_ORDER:
883-
m_diagramsOrder = val.value<String>().split(FRET_BOX_DIAGRAMS_SEPARATOR);
884-
break;
885-
case Pid::FRET_FRAME_INVISIBLE_DIAGRAMS:
886-
m_invisibleDiagrams = val.value<String>().split(FRET_BOX_DIAGRAMS_SEPARATOR);
873+
reorderElements(val.value<String>().split(FRET_BOX_DIAGRAMS_SEPARATOR));
887874
break;
888875
default:
889876
return VBox::setProperty(propertyId, val);
@@ -907,9 +894,12 @@ PropertyValue FBox::propertyDefault(Pid propertyId) const
907894
case Pid::FRET_FRAME_H_ALIGN:
908895
return static_cast<int>(AlignH::HCENTER);
909896
case Pid::FRET_FRAME_DIAGRAMS_ORDER:
910-
return PropertyValue();
911-
case Pid::FRET_FRAME_INVISIBLE_DIAGRAMS:
912-
return PropertyValue();
897+
return m_diagramsOrderInScore.join(FRET_BOX_DIAGRAMS_SEPARATOR);
898+
case Pid::EXCLUDE_FROM_OTHER_PARTS:
899+
return true;
900+
case Pid::APPEARANCE_LINKED_TO_MASTER:
901+
case Pid::POSITION_LINKED_TO_MASTER:
902+
return false;
913903
default:
914904
return VBox::propertyDefault(propertyId);
915905
}
@@ -946,81 +936,25 @@ void FBox::undoReorderElements(const StringList& newOrder)
946936
triggerLayout();
947937
}
948938

949-
ElementList FBox::orderedElements(bool includeInvisible) const
939+
void FBox::reorderElements(const StringList& newOrder)
950940
{
951-
ElementList elements = el();
952-
const StringList& diagramsOrder = this->diagramsOrder();
953-
if (diagramsOrder.empty()) {
954-
return elements;
955-
}
956-
957-
std::sort(elements.begin(), elements.end(), [&diagramsOrder](const EngravingItem* a, const EngravingItem* b) {
958-
const FretDiagram* diagramA = toFretDiagram(a);
959-
const String diagramAHarmonyName = diagramA->harmonyText().toLower();
960-
961-
const FretDiagram* diagramB = toFretDiagram(b);
962-
const String diagramBHarmonyName = diagramB->harmonyText().toLower();
963-
964-
auto itA = std::find(diagramsOrder.begin(), diagramsOrder.end(), diagramAHarmonyName);
965-
auto itB = std::find(diagramsOrder.begin(), diagramsOrder.end(), diagramBHarmonyName);
966-
967-
return itA < itB;
941+
std::sort(m_el.begin(), m_el.end(), [&](EngravingItem* a, EngravingItem* b) {
942+
String nameA = toFretDiagram(a)->harmonyText().toLower();
943+
String nameB = toFretDiagram(b)->harmonyText().toLower();
944+
auto iterA = std::find(newOrder.begin(), newOrder.end(), nameA);
945+
auto iterB = std::find(newOrder.begin(), newOrder.end(), nameB);
946+
return iterA < iterB;
968947
});
969-
970-
if (!includeInvisible) {
971-
const StringList& invisibleDiagrams = this->invisibleDiagrams();
972-
973-
muse::remove_if(elements, [&invisibleDiagrams](const EngravingItem* element){
974-
const FretDiagram* diagram = toFretDiagram(element);
975-
const String diagramHarmonyName = diagram->harmonyText().toLower();
976-
return muse::contains(invisibleDiagrams, diagramHarmonyName);
977-
});
978-
}
979-
980-
return elements;
981948
}
982949

983-
void FBox::undoSetInvisibleDiagrams(const StringList& invisibleDiagrams)
950+
StringList FBox::diagramsOrder() const
984951
{
985-
StringList diagrams;
986-
for (const String& harmonyName : invisibleDiagrams) {
987-
diagrams.push_back(harmonyName.toLower());
988-
}
989-
990-
undoChangeProperty(Pid::FRET_FRAME_INVISIBLE_DIAGRAMS, diagrams.join(FRET_BOX_DIAGRAMS_SEPARATOR));
991-
triggerLayout();
992-
}
993-
994-
void FBox::updateDiagramsOrder(const StringList& currentDiagrams)
995-
{
996-
if (currentDiagrams == m_diagramsOrder) {
997-
return;
998-
}
999-
1000-
m_diagramsOrder.erase(std::remove_if(m_diagramsOrder.begin(), m_diagramsOrder.end(),
1001-
[&](const String& harmonyName) { return !muse::contains(currentDiagrams, harmonyName); }),
1002-
m_diagramsOrder.end());
1003-
1004-
String previousHarmonyName;
1005-
for (const String& harmonyName : currentDiagrams) {
1006-
if (!muse::contains(m_diagramsOrder, harmonyName)) {
1007-
size_t index = 0;
1008-
if (!previousHarmonyName.empty()) {
1009-
index = std::find(m_diagramsOrder.begin(), m_diagramsOrder.end(), previousHarmonyName) - m_diagramsOrder.begin() + 1;
1010-
}
1011-
1012-
m_diagramsOrder.insert(m_diagramsOrder.begin() + index, harmonyName);
1013-
}
1014-
1015-
previousHarmonyName = harmonyName;
952+
StringList result;
953+
for (EngravingItem* item : m_el) {
954+
result.push_back(toFretDiagram(item)->harmonyText().toLower());
1016955
}
1017-
}
1018956

1019-
void FBox::updateInvisibleDiagrams(const StringList& currentDiagrams)
1020-
{
1021-
m_invisibleDiagrams.erase(std::remove_if(m_invisibleDiagrams.begin(), m_invisibleDiagrams.end(),
1022-
[&](const String& harmonyName) { return !muse::contains(currentDiagrams, harmonyName); }),
1023-
m_invisibleDiagrams.end());
957+
return result;
1024958
}
1025959

1026960
//---------------------------------------------------------

src/engraving/dom/box.h

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -208,19 +208,14 @@ class FBox : public VBox
208208
std::vector<PointF> gripsPositions(const EditData&) const override;
209209

210210
void undoReorderElements(const StringList& newOrder);
211-
const StringList& diagramsOrder() const { return m_diagramsOrder; }
212-
213-
void undoSetInvisibleDiagrams(const StringList& invisibleDiagrams);
214-
const StringList& invisibleDiagrams() const { return m_invisibleDiagrams; }
215-
216-
ElementList orderedElements(bool includeInvisible = false) const;
211+
void reorderElements(const StringList& newOrder);
212+
StringList diagramsOrder() const;
217213

218214
bool needsRebuild() const { return m_needsRebuild; }
219215
void setNeedsRebuild(bool v) { m_needsRebuild = v; }
220216

221217
private:
222218

223-
void updateDiagramsOrder(const StringList& currentDiagrams);
224219
void updateInvisibleDiagrams(const StringList& currentDiagrams);
225220
size_t computeInsertionIdx(const String& nameOfDiagramBeforeThis);
226221

@@ -234,8 +229,7 @@ class FBox : public VBox
234229

235230
AlignH m_contentAlignmentH = AlignH::HCENTER;
236231

237-
StringList /*harmonyNames*/ m_diagramsOrder;
238-
StringList /*harmonyNames*/ m_invisibleDiagrams;
232+
StringList m_diagramsOrderInScore;
239233
};
240234

241235
//---------------------------------------------------------

src/engraving/dom/chordlist.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1707,7 +1707,6 @@ const std::list<RenderActionPtr >& ParsedChord::renderList(const ChordList* cl,
17071707
// Jazz superscript
17081708
if (superScriptModifier) {
17091709
// Set scale
1710-
LOGI() << "SCALE: " << cl->stackedModifierMag();
17111710
m_renderList.emplace_back(new RenderActionScale(cl->stackedModifierMag()));
17121711
// Move to x-height
17131712
m_renderList.emplace_back(new RenderActionPush());

0 commit comments

Comments
 (0)