diff --git a/src/engraving/dom/note.cpp b/src/engraving/dom/note.cpp index 2176c4ae622f7..14517464435d6 100644 --- a/src/engraving/dom/note.cpp +++ b/src/engraving/dom/note.cpp @@ -1405,6 +1405,72 @@ void Note::updateFrettingForTiesAndBends() setFret(prevNote->fret()); } +bool Note::shouldHideFret() const +{ + if (!tieBack() || shouldForceShowFret()) { + return false; + } + + if (isContinuationOfBend()) { + return true; + } + + ShowTiedFret showTiedFret = style().value(Sid::tabShowTiedFret).value(); + if (showTiedFret == ShowTiedFret::TIE_AND_FRET) { + return false; + } + + ParenthesizeTiedFret parenthTiedFret = style().value(Sid::tabParenthesizeTiedFret).value(); + if (parenthTiedFret == ParenthesizeTiedFret::NEVER || !rtick().isZero()) { + return true; + } + + if (parenthTiedFret == ParenthesizeTiedFret::START_OF_MEASURE) { + return false; + } + + const Measure* measure = findMeasure(); + bool isStartOfSystem = measure && measure->system() && measure->isFirstInSystem(); + + return !isStartOfSystem; +} + +bool Note::shouldForceShowFret() const +{ + if (!style().styleB(Sid::parenthesizeTiedFretIfArticulation)) { + return false; + } + + Chord* ch = chord(); + if (!ch) { + return false; + } + + auto hasTremoloBar = [&] () { + for (EngravingItem* item : ch->segment()->annotations()) { + if (item && item->isTremoloBar() && item->track() == track()) { + return true; + } + } + return false; + }; + + auto hasVibratoLine = [&] () { + auto spanners = score()->spannerMap().findOverlapping(tick().ticks(), (tick() + ch->actualTicks()).ticks()); + for (auto interval : spanners) { + Spanner* sp = interval.value; + if (sp->isVibrato() && sp->startElement() == ch) { + return true; + } + } + return false; + }; + + bool startsNonBendSpanner = !spannerFor().empty() && !bendFor(); + + return !ch->articulations().empty() || ch->chordLine() || startsNonBendSpanner || hasTremoloBar() || hasVibratoLine(); +} + void Note::setupAfterRead(const Fraction& ctxTick, bool pasteMode) { // ensure sane values: @@ -3614,6 +3680,25 @@ bool Note::isGraceBendStart() const return bend && bend->type() == GuitarBendType::GRACE_NOTE_BEND; } +bool Note::isContinuationOfBend() const +{ + if (bendBack()) { + return true; + } + + Tie* tie = tieBack(); + Note* note = nullptr; + while (tie && tie->startNote()) { + note = tie->startNote(); + if (note->bendBack()) { + return true; + } + tie = note->tieBack(); + } + + return false; +} + bool Note::hasAnotherStraightAboveOrBelow(bool above) const { if (!chord()) { diff --git a/src/engraving/dom/note.h b/src/engraving/dom/note.h index 215c3b28ba000..a242d20bcde1c 100644 --- a/src/engraving/dom/note.h +++ b/src/engraving/dom/note.h @@ -430,6 +430,7 @@ class Note final : public EngravingItem bool isPreBendStart() const; bool isGraceBendStart() const; + bool isContinuationOfBend() const; bool hasAnotherStraightAboveOrBelow(bool above) const; @@ -446,6 +447,8 @@ class Note final : public EngravingItem bool isNoteName() const; void updateFrettingForTiesAndBends(); + bool shouldHideFret() const; + bool shouldForceShowFret() const; struct LayoutData : public EngravingItem::LayoutData { ld_field useTablature = { "[Note] useTablature", false }; diff --git a/src/engraving/dom/stafftype.h b/src/engraving/dom/stafftype.h index 75c6747ba43a0..2a67244519b83 100644 --- a/src/engraving/dom/stafftype.h +++ b/src/engraving/dom/stafftype.h @@ -182,6 +182,18 @@ enum class StaffTypes : signed char { TAB_DEFAULT = StaffTypes::TAB_6COMMON, }; +enum class ShowTiedFret { + TIE_AND_FRET, + TIE, + NONE, +}; + +enum class ParenthesizeTiedFret { + START_OF_SYSTEM, + START_OF_MEASURE, + NEVER, +}; + //--------------------------------------------------------- // StaffType //--------------------------------------------------------- diff --git a/src/engraving/rendering/dev/chordlayout.cpp b/src/engraving/rendering/dev/chordlayout.cpp index 19a619a72717f..7eb46f777b4ee 100644 --- a/src/engraving/rendering/dev/chordlayout.cpp +++ b/src/engraving/rendering/dev/chordlayout.cpp @@ -3072,7 +3072,7 @@ void ChordLayout::updateLineAttachPoints(Chord* chord, bool isFirstInMeasure, La for (Note* note : chord->notes()) { Tie* tieBack = note->tieBack(); if (tieBack && tieBack->startNote()->findMeasure() != note->findMeasure()) { - SlurTieLayout::tieLayoutBack(tieBack, note->findMeasure()->system()); + SlurTieLayout::tieLayoutBack(tieBack, note->findMeasure()->system(), ctx); } } } @@ -3453,13 +3453,10 @@ void ChordLayout::layoutNote2(Note* item, LayoutContext& ctx) bool isTabStaff = staffType && staffType->isTabStaff(); // First, for tab staves that have show back-tied fret marks option, we add parentheses to the tied note if // the tie spans a system boundary. This can't be done in layout as the system of each note is not decided yet - bool useParens = isTabStaff && !staffType->showBackTied() && !item->fixed(); - if (useParens - && item->tieBack() - && ( - item->chord()->measure()->system() != item->tieBack()->startNote()->chord()->measure()->system() - || !item->el().empty() - )) { + ShowTiedFret showTiedFret = item->style().value(Sid::tabShowTiedFret).value(); + bool useParens = isTabStaff && !item->fixed() && item->tieBack() + && showTiedFret != ShowTiedFret::TIE_AND_FRET && !item->shouldHideFret(); + if (useParens) { if (!item->fretString().startsWith(u'(')) { // Hack: don't add parentheses if already added item->setFretString(String(u"(%1)").arg(item->fretString())); } diff --git a/src/engraving/rendering/dev/measurelayout.cpp b/src/engraving/rendering/dev/measurelayout.cpp index 808354de23c93..4e414b6fed91b 100644 --- a/src/engraving/rendering/dev/measurelayout.cpp +++ b/src/engraving/rendering/dev/measurelayout.cpp @@ -125,7 +125,7 @@ void MeasureLayout::layout2(Measure* item, LayoutContext& ctx) SlurTieLayout::tieLayoutFor(tieFor, item->system()); } if (tieBack && tieBack->tick() < stick && tieBack->isCrossStaff()) { - SlurTieLayout::tieLayoutBack(tieBack, item->system()); + SlurTieLayout::tieLayoutBack(tieBack, item->system(), ctx); } } } diff --git a/src/engraving/rendering/dev/slurtielayout.cpp b/src/engraving/rendering/dev/slurtielayout.cpp index cfe7fc020d967..1309f0f3b16b0 100644 --- a/src/engraving/rendering/dev/slurtielayout.cpp +++ b/src/engraving/rendering/dev/slurtielayout.cpp @@ -27,6 +27,7 @@ #include "dom/slur.h" #include "dom/chord.h" +#include "dom/score.h" #include "dom/system.h" #include "dom/staff.h" #include "dom/stafftype.h" @@ -1436,7 +1437,13 @@ static bool tieSegmentShouldBeSkipped(Tie* item) return false; } - return !st->showBackTied() || (startNote && startNote->harmonic()); + if (startNote->isContinuationOfBend()) { + return true; + } + + ShowTiedFret showTiedFret = item->style().value(Sid::tabShowTiedFret).value(); + + return showTiedFret == ShowTiedFret::NONE; } TieSegment* SlurTieLayout::tieLayoutFor(Tie* item, System* system) @@ -1511,8 +1518,12 @@ TieSegment* SlurTieLayout::tieLayoutFor(Tie* item, System* system) return segment; } -TieSegment* SlurTieLayout::tieLayoutBack(Tie* item, System* system) +TieSegment* SlurTieLayout::tieLayoutBack(Tie* item, System* system, LayoutContext& ctx) { + if (item->staffType() && item->staffType()->isTabStaff()) { + // On TAB, the presence of this tie may require to add a parenthesis + ChordLayout::layout(item->endNote()->chord(), ctx); + } // do not layout ties in tablature if not showing back-tied fret marks if (tieSegmentShouldBeSkipped(item)) { if (!item->segmentsEmpty()) { diff --git a/src/engraving/rendering/dev/slurtielayout.h b/src/engraving/rendering/dev/slurtielayout.h index 774f2563d7cb7..ddcc9c36aaff4 100644 --- a/src/engraving/rendering/dev/slurtielayout.h +++ b/src/engraving/rendering/dev/slurtielayout.h @@ -51,7 +51,7 @@ class SlurTieLayout static SpannerSegment* layoutSystem(Slur* item, System* system, LayoutContext& ctx); static TieSegment* tieLayoutFor(Tie* item, System* system); - static TieSegment* tieLayoutBack(Tie* item, System* system); + static TieSegment* tieLayoutBack(Tie* item, System* system, LayoutContext& ctx); static void resolveVerticalTieCollisions(const std::vector& stackedTies); static void computeUp(Slur* slur, LayoutContext& ctx); diff --git a/src/engraving/rendering/dev/systemlayout.cpp b/src/engraving/rendering/dev/systemlayout.cpp index 0724e87e547a8..6f8c3580cbd1b 100644 --- a/src/engraving/rendering/dev/systemlayout.cpp +++ b/src/engraving/rendering/dev/systemlayout.cpp @@ -904,9 +904,9 @@ void SystemLayout::layoutSystemElements(System* system, LayoutContext& ctx) // ties if (ctx.conf().isLinearMode()) { - doLayoutTiesLinear(system); + doLayoutTiesLinear(system, ctx); } else { - doLayoutTies(system, sl, stick, etick); + doLayoutTies(system, sl, stick, etick, ctx); } // guitar bends layoutGuitarBends(sl, ctx); @@ -1331,7 +1331,7 @@ void SystemLayout::layoutSystemElements(System* system, LayoutContext& ctx) } } -void SystemLayout::doLayoutTies(System* system, std::vector sl, const Fraction& stick, const Fraction& etick) +void SystemLayout::doLayoutTies(System* system, std::vector sl, const Fraction& stick, const Fraction& etick, LayoutContext& ctx) { UNUSED(etick); @@ -1342,14 +1342,14 @@ void SystemLayout::doLayoutTies(System* system, std::vector sl, const } Chord* c = toChord(e); for (Chord* ch : c->graceNotes()) { - layoutTies(ch, system, stick); + layoutTies(ch, system, stick, ctx); } - layoutTies(c, system, stick); + layoutTies(c, system, stick, ctx); } } } -void SystemLayout::doLayoutTiesLinear(System* system) +void SystemLayout::doLayoutTiesLinear(System* system, LayoutContext& ctx) { constexpr Fraction start = Fraction(0, 1); for (Measure* measure = system->firstMeasure(); measure; measure = measure->nextMeasure()) { @@ -1363,9 +1363,9 @@ void SystemLayout::doLayoutTiesLinear(System* system) } Chord* c = toChord(e); for (Chord* ch : c->graceNotes()) { - layoutTies(ch, system, start); + layoutTies(ch, system, start, ctx); } - layoutTies(c, system, start); + layoutTies(c, system, start, ctx); } } } @@ -1559,7 +1559,7 @@ void SystemLayout::processLines(System* system, LayoutContext& ctx, std::vector< } } -void SystemLayout::layoutTies(Chord* ch, System* system, const Fraction& stick) +void SystemLayout::layoutTies(Chord* ch, System* system, const Fraction& stick, LayoutContext& ctx) { SysStaff* staff = system->staff(ch->staffIdx()); if (!staff->show()) { @@ -1579,7 +1579,7 @@ void SystemLayout::layoutTies(Chord* ch, System* system, const Fraction& stick) t = note->tieBack(); if (t) { if (t->startNote()->tick() < stick) { - TieSegment* ts = SlurTieLayout::tieLayoutBack(t, system); + TieSegment* ts = SlurTieLayout::tieLayoutBack(t, system, ctx); if (ts && ts->addToSkyline()) { staff->skyline().add(ts->shape().translate(ts->pos())); stackedBackwardTies.push_back(ts); @@ -1674,7 +1674,7 @@ void SystemLayout::restoreTiesAndBends(System* system, LayoutContext& ctx) } Fraction stick = system->measures().front()->tick(); Fraction etick = system->measures().back()->endTick(); - doLayoutTies(system, segList, stick, etick); + doLayoutTies(system, segList, stick, etick, ctx); layoutGuitarBends(segList, ctx); } diff --git a/src/engraving/rendering/dev/systemlayout.h b/src/engraving/rendering/dev/systemlayout.h index 824d8c49395a5..3b87b5334f66a 100644 --- a/src/engraving/rendering/dev/systemlayout.h +++ b/src/engraving/rendering/dev/systemlayout.h @@ -62,9 +62,9 @@ class SystemLayout private: static System* getNextSystem(LayoutContext& lc); static void processLines(System* system, LayoutContext& ctx, std::vector lines, bool align); - static void layoutTies(Chord* ch, System* system, const Fraction& stick); - static void doLayoutTies(System* system, std::vector sl, const Fraction& stick, const Fraction& etick); - static void doLayoutTiesLinear(System* system); + static void layoutTies(Chord* ch, System* system, const Fraction& stick, LayoutContext& ctx); + static void doLayoutTies(System* system, std::vector sl, const Fraction& stick, const Fraction& etick, LayoutContext& ctx); + static void doLayoutTiesLinear(System* system, LayoutContext& ctx); static void layoutGuitarBends(const std::vector& sl, LayoutContext& ctx); static void justifySystem(System* system, double curSysWidth, double targetSystemWidth); static void updateCrossBeams(System* system, LayoutContext& ctx); diff --git a/src/engraving/rendering/dev/tdraw.cpp b/src/engraving/rendering/dev/tdraw.cpp index 9d5854a601ca5..27e19e80f992e 100644 --- a/src/engraving/rendering/dev/tdraw.cpp +++ b/src/engraving/rendering/dev/tdraw.cpp @@ -2220,17 +2220,11 @@ void TDraw::draw(const Note* item, Painter* painter) // tablature if (tablature) { - if (item->displayFret() == Note::DisplayFretOption::Hide) { + if (item->displayFret() == Note::DisplayFretOption::Hide || item->shouldHideFret()) { return; } const Staff* st = item->staff(); const StaffType* tab = st->staffTypeForElement(item); - if (item->tieBack() && !tab->showBackTied()) { - if (item->chord()->measure()->system() == item->tieBack()->startNote()->chord()->measure()->system() && item->el().empty()) { - // fret should be hidden, so return without drawing it - return; - } - } // draw background, if required (to hide a segment of string line or to show a fretting conflict) if (!tab->linesThrough() || item->fretConflict()) { double d = item->spatium() * .1; diff --git a/src/engraving/style/styledef.cpp b/src/engraving/style/styledef.cpp index afff48e987435..07f4c480d83a0 100644 --- a/src/engraving/style/styledef.cpp +++ b/src/engraving/style/styledef.cpp @@ -29,6 +29,7 @@ #include "dom/articulation.h" #include "dom/mscore.h" #include "dom/realizedharmony.h" +#include "dom/stafftype.h" #include "dom/textbase.h" #include "dom/tuplet.h" #include "dom/types.h" @@ -1597,6 +1598,10 @@ const std::array StyleDef::styleValue { Sid::golpeShowTabSimple, "golpeShowTabSimple", true }, { Sid::golpeShowTabCommon, "golpeShowTabCommon", true }, + { Sid::tabShowTiedFret, "tabShowTiedFret", int(ShowTiedFret::TIE_AND_FRET) }, + { Sid::tabParenthesizeTiedFret, "tabParenthesizeTiedFret", int(ParenthesizeTiedFret::START_OF_SYSTEM) }, + { Sid::parenthesizeTiedFretIfArticulation, "parenthesizeTiedFretIfArticulation", true }, + { Sid::chordlineThickness, "chordlineThickness", Spatium(0.16) }, { Sid::autoplaceEnabled, "autoplaceEnabled", true }, diff --git a/src/engraving/style/styledef.h b/src/engraving/style/styledef.h index 8d8044b981ea5..fcf317e094a8c 100644 --- a/src/engraving/style/styledef.h +++ b/src/engraving/style/styledef.h @@ -1606,6 +1606,10 @@ enum class Sid { golpeShowTabSimple, golpeShowTabCommon, + tabShowTiedFret, + tabParenthesizeTiedFret, + parenthesizeTiedFretIfArticulation, + chordlineThickness, autoplaceEnabled, diff --git a/src/framework/ui/view/uitheme.cpp b/src/framework/ui/view/uitheme.cpp index 3d8f4cf455e18..4d03f8a32239e 100644 --- a/src/framework/ui/view/uitheme.cpp +++ b/src/framework/ui/view/uitheme.cpp @@ -930,7 +930,9 @@ void UiTheme::drawRadioButtonIndicator(QPainter* painter, const QRect& rect, con QColor borderColor = fontPrimaryColor(); QColor backgroundColor = textFieldColor(); - if (styleState.pressed) { + if (!styleState.enabled) { + borderColor.setAlphaF(itemOpacityDisabled()); + } else if (styleState.pressed) { borderColor.setAlphaF(buttonOpacityHit()); } else if (styleState.hovered) { borderColor.setAlphaF(buttonOpacityHover()); diff --git a/src/notation/view/widgets/editstafftype.cpp b/src/notation/view/widgets/editstafftype.cpp index 1341b8b6956d3..c2850ce3686bd 100644 --- a/src/notation/view/widgets/editstafftype.cpp +++ b/src/notation/view/widgets/editstafftype.cpp @@ -145,7 +145,6 @@ EditStaffType::EditStaffType(QWidget* parent) connect(showTabFingering, &QCheckBox::toggled, this, &EditStaffType::updatePreview); connect(upsideDown, &QCheckBox::toggled, this, &EditStaffType::updatePreview); connect(numbersRadio, &QCheckBox::toggled, this, &EditStaffType::updatePreview); - connect(showBackTied, &QCheckBox::toggled, this, &EditStaffType::updatePreview); connect(templateReset, &QPushButton::clicked, this, &EditStaffType::resetToTemplateClicked); connect(addToTemplates, &QPushButton::clicked, this, &EditStaffType::addToTemplatesClicked); @@ -283,7 +282,6 @@ void EditStaffType::setValues() aboveLinesRadio->setChecked(!staffType.onLines()); linesThroughRadio->setChecked(staffType.linesThrough()); linesBrokenRadio->setChecked(!staffType.linesThrough()); - showBackTied->setChecked(staffType.showBackTied()); idx = durFontName->findText(staffType.durationFontName(), Qt::MatchFixedString); if (idx == -1) { @@ -450,7 +448,6 @@ void EditStaffType::setFromDlg() staffType.setFretFontSize(fretFontSize->value()); staffType.setFretFontUserY(fretY->value()); staffType.setLinesThrough(linesThroughRadio->isChecked()); - staffType.setShowBackTied(showBackTied->isChecked()); staffType.setMinimStyle(minimNoneRadio->isChecked() ? mu::engraving::TablatureMinimStyle::NONE : (minimShortRadio->isChecked() ? mu::engraving::TablatureMinimStyle::SHORTER : mu::engraving:: TablatureMinimStyle:: @@ -512,7 +509,6 @@ void EditStaffType::blockSignals(bool block) aboveLinesRadio->blockSignals(block); linesThroughRadio->blockSignals(block); linesBrokenRadio->blockSignals(block); - showBackTied->blockSignals(block); durFontName->blockSignals(block); durFontSize->blockSignals(block); diff --git a/src/notation/view/widgets/editstafftype.ui b/src/notation/view/widgets/editstafftype.ui index dc75079c4c6a2..7a7f46e94466e 100644 --- a/src/notation/view/widgets/editstafftype.ui +++ b/src/notation/view/widgets/editstafftype.ui @@ -29,7 +29,6 @@ - 75 true @@ -218,7 +217,7 @@ 0 - 0 + 2 @@ -681,13 +680,6 @@ - - - - Show back-tied fret marks - - - @@ -1431,7 +1423,6 @@ aboveLinesRadio linesThroughRadio linesBrokenRadio - showBackTied showTabFingering durFontName durFontSize diff --git a/src/notation/view/widgets/editstyle.cpp b/src/notation/view/widgets/editstyle.cpp index 876bc088e692d..c92296a191964 100644 --- a/src/notation/view/widgets/editstyle.cpp +++ b/src/notation/view/widgets/editstyle.cpp @@ -38,6 +38,7 @@ #include "engraving/dom/figuredbass.h" #include "engraving/dom/masterscore.h" #include "engraving/dom/realizedharmony.h" +#include "engraving/dom/stafftype.h" #include "engraving/dom/text.h" #include "engraving/style/textstyle.h" #include "engraving/types/symnames.h" @@ -253,6 +254,21 @@ EditStyle::EditStyle(QWidget* parent) articulationKeepTogether->addButton(radioArticKeepTogether, 1); articulationKeepTogether->addButton(radioArticAllowSeparate, 0); + QButtonGroup* tabShowTiedFrets = new QButtonGroup(this); + tabShowTiedFrets->addButton(tabShowTiesAndFret, int(ShowTiedFret::TIE_AND_FRET)); + tabShowTiedFrets->addButton(tabShowTies, int(ShowTiedFret::TIE)); + tabShowTiedFrets->addButton(tabShowNone, int(ShowTiedFret::NONE)); + + QButtonGroup* tabParenthFrets = new QButtonGroup(this); + tabParenthFrets->addButton(tabParenthSystem, int(ParenthesizeTiedFret::START_OF_SYSTEM)); + tabParenthFrets->addButton(tabParenthMeasure, int(ParenthesizeTiedFret::START_OF_MEASURE)); + tabParenthFrets->addButton(tabParenthNone, int(ParenthesizeTiedFret::NEVER)); + + void (QButtonGroup::* tabShowTiedFretsButtonClicked)(QAbstractButton*) = &QButtonGroup::buttonClicked; + connect(tabShowTiedFrets, tabShowTiedFretsButtonClicked, this, [this](QAbstractButton*){ + updateParenthesisIndicatingTiesGroupState(); + }); + // ==================================================== // Style widgets // ==================================================== @@ -625,6 +641,10 @@ EditStyle::EditStyle(QWidget* parent) { StyleId::wahShowTabCommon, false, wahShowTabCommon, 0 }, { StyleId::golpeShowTabSimple, false, golpeShowTabSimple, 0 }, { StyleId::golpeShowTabCommon, false, golpeShowTabCommon, 0 }, + + { StyleId::tabShowTiedFret, false, tabShowTiedFrets, 0 }, + { StyleId::tabParenthesizeTiedFret, false, tabParenthFrets, 0 }, + { StyleId::parenthesizeTiedFretIfArticulation, false, tabParenthArticulation, 0 }, }; // ==================================================== @@ -1076,9 +1096,6 @@ EditStyle::EditStyle(QWidget* parent) textStyleValueChanged(TextStylePropertyType::Color, textStyleColor->color()); }); - // TODO: bring back the tab styles button and make sure right styles are applied as default - resetTabStylesButton->setVisible(false); - connect(textStyles, &QListWidget::currentRowChanged, this, &EditStyle::textStyleChanged); textStyles->setCurrentRow(s_lastSubPageRow); @@ -1953,6 +1970,8 @@ void EditStyle::setValues() for (const LineStyleSelect* lineStyleSelect : m_lineStyleSelects) { lineStyleSelect->update(); } + + updateParenthesisIndicatingTiesGroupState(); } //--------------------------------------------------------- @@ -2438,3 +2457,8 @@ void EditStyle::resetUserStyleName() styleName->clear(); endEditUserStyleName(); } + +void EditStyle::updateParenthesisIndicatingTiesGroupState() +{ + groupBox_2->setEnabled(tabShowTies->isChecked() || tabShowNone->isChecked()); +} diff --git a/src/notation/view/widgets/editstyle.h b/src/notation/view/widgets/editstyle.h index c4810be75a2af..e6e809a385318 100644 --- a/src/notation/view/widgets/editstyle.h +++ b/src/notation/view/widgets/editstyle.h @@ -139,6 +139,7 @@ private slots: void editUserStyleName(); void endEditUserStyleName(); void resetUserStyleName(); + void updateParenthesisIndicatingTiesGroupState(); private: QString m_currentPageCode; diff --git a/src/notation/view/widgets/editstyle.ui b/src/notation/view/widgets/editstyle.ui index a9781b785007f..896cf554e29b8 100644 --- a/src/notation/view/widgets/editstyle.ui +++ b/src/notation/view/widgets/editstyle.ui @@ -12916,8 +12916,8 @@ By default, they will be placed such as that their right end are at the same lev 0 0 - 354 - 385 + 583 + 584 @@ -12938,15 +12938,15 @@ By default, they will be placed such as that their right end are at the same lev - + 0 0 - - + + 12 @@ -12973,25 +12973,22 @@ By default, they will be placed such as that their right end are at the same lev 6 - - + + - - false - - - + + - Staccato + - - + + @@ -13000,36 +12997,18 @@ By default, they will be placed such as that their right end are at the same lev - - - - - - - - - - - Accent and marcato marks - - - - - + + - - - - - - Harmonic marks + + false - - + + @@ -13038,98 +13017,87 @@ By default, they will be placed such as that their right end are at the same lev - - + + - Turns + - - + + - - false - - - + + - + Golpe - - + + - - + + - Palm mute (P.M.) + Accent and marcato marks - - - - Let ring + + + + Qt::Horizontal - - - - - - + + QSizePolicy::Minimum - - false + + + 80 + 20 + - + - - + + - + Dynamics - - - - Slurs - - - - - + + - Wah open/close + Harmonic marks - + Crescendo and diminuendo lines - - + + @@ -13138,36 +13106,32 @@ By default, they will be placed such as that their right end are at the same lev - - - - Simple - - - - - + + + + false + - - + + - - + + - - + + @@ -13176,21 +13140,21 @@ By default, they will be placed such as that their right end are at the same lev - - + + - - + + - + Common @@ -13203,8 +13167,8 @@ By default, they will be placed such as that their right end are at the same lev - - + + @@ -13214,7 +13178,7 @@ By default, they will be placed such as that their right end are at the same lev - + @@ -13223,56 +13187,83 @@ By default, they will be placed such as that their right end are at the same lev - - + + + + false + - - + + - + Slurs - - + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 8 + + + + + + - Fermatas + Palm mute (P.M.) - - + + - + Mordents - - false + + + + + + - - + + - Golpe + - - + + - - false + + + + + + Turns - - + + @@ -13281,15 +13272,22 @@ By default, they will be placed such as that their right end are at the same lev - - + + - + Let ring - - + + + + Simple + + + + + @@ -13298,22 +13296,22 @@ By default, they will be placed such as that their right end are at the same lev - - + + - Mordents + Wah open/close - - + + - Rasgueado + Staccato - - + + @@ -13322,7 +13320,14 @@ By default, they will be placed such as that their right end are at the same lev - + + + + Rasgueado + + + + @@ -13332,50 +13337,44 @@ By default, they will be placed such as that their right end are at the same lev - - - - Qt::Vertical + + + + - - QSizePolicy::Fixed + + false - - - 20 - 8 - + + + + + + Fermatas - + - - - - - - 6 - - - 0 - - - 16 - - - + + - Reset tablature styles to default + + + + false - - + + Qt::Horizontal + + QSizePolicy::Minimum + - 40 + 80 20 @@ -13398,7 +13397,7 @@ By default, they will be placed such as that their right end are at the same lev - + Qt::Horizontal @@ -13413,6 +13412,74 @@ By default, they will be placed such as that their right end are at the same lev + + + + Tied fret marks + + + + + + Show ties and repeat fret marks + + + + + + + Show ties only + + + + + + + Show initial fret mark only + + + + + + + + + + Parenthesis indicating ties + + + + + + Only show at the start of a system + + + + + + + Always show at the start of a bar + + + + + + + Never show + + + + + + + Always show parenthesised fret marks when +articulation markings are present + + + + + + @@ -14581,7 +14648,6 @@ By default, they will be placed such as that their right end are at the same lev wahShowTabSimple golpeShowTabCommon golpeShowTabSimple - resetTabStylesButton textStyles styleName resetTextStyleName