From 6ff2699e81749f70b421ac9d070a8b9735cb8918 Mon Sep 17 00:00:00 2001 From: Marc Sabatella Date: Fri, 19 Jun 2015 08:34:38 -0600 Subject: [PATCH] fix #65861: paste of single chord symbol does not transpose --- libmscore/chordrest.cpp | 15 ++++++++++++++- libmscore/paste.cpp | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/libmscore/chordrest.cpp b/libmscore/chordrest.cpp index f60def7319..2edba6bc72 100644 --- a/libmscore/chordrest.cpp +++ b/libmscore/chordrest.cpp @@ -41,6 +41,7 @@ #include "harmony.h" #include "figuredbass.h" #include "icon.h" +#include "utils.h" namespace Ms { @@ -882,7 +883,19 @@ Element* ChordRest::drop(const DropData& data) break; case Element::Type::HARMONY: - static_cast(e)->render(); + { + // transpose + Harmony* harmony = static_cast(e); + Interval interval = staff()->part()->instrument()->transpose(); + if (!score()->styleB(StyleIdx::concertPitch) && !interval.isZero()) { + interval.flip(); + int rootTpc = transposeTpc(harmony->rootTpc(), interval, true); + int baseTpc = transposeTpc(harmony->baseTpc(), interval, true); + score()->undoTransposeHarmony(harmony, rootTpc, baseTpc); + } + // render + harmony->render(); + } // fall through case Element::Type::TEXT: case Element::Type::STAFF_TEXT: diff --git a/libmscore/paste.cpp b/libmscore/paste.cpp index 00fb345cd4..a93402975e 100644 --- a/libmscore/paste.cpp +++ b/libmscore/paste.cpp @@ -796,7 +796,7 @@ PasteStatus Score::cmdPaste(const QMimeData* ms, MuseScoreView* view) qDebug("no application mime data"); return PasteStatus::NO_MIME; } - if ((_selection.isSingle()|| _selection.isList()) && ms->hasFormat(mimeSymbolFormat)) { + if ((_selection.isSingle() || _selection.isList()) && ms->hasFormat(mimeSymbolFormat)) { QByteArray data(ms->data(mimeSymbolFormat)); XmlReader e(data); QPointF dragOffset;