@@ -3463,7 +3463,10 @@ void NotationInteraction::copySelection()
3463
3463
m_editData.element ->editCopy (m_editData);
3464
3464
mu::engraving::TextEditData* ted = static_cast <mu::engraving::TextEditData*>(m_editData.getData (m_editData.element ).get ());
3465
3465
if (!ted->selectedText .isEmpty ()) {
3466
- QGuiApplication::clipboard ()->setText (ted->selectedText );
3466
+ QMimeData* mimeData = new QMimeData ();
3467
+ mimeData->setData (TextEditData::mimeRichTextFormat, ted->selectedText .toQString ().toUtf8 ());
3468
+ mimeData->setText (ted->selectedPlainText );
3469
+ QGuiApplication::clipboard ()->setMimeData (mimeData);
3467
3470
}
3468
3471
} else {
3469
3472
QMimeData* mimeData = selection ()->mimeData ();
@@ -3535,25 +3538,31 @@ void NotationInteraction::pasteSelection(const Fraction& scale)
3535
3538
startEdit ();
3536
3539
3537
3540
if (isTextEditingStarted ()) {
3538
- QString clipboardText = QGuiApplication::clipboard ()->text ();
3539
- QString textForPaste = clipboardText;
3540
- if ((!clipboardText.startsWith (' <' ) || !clipboardText.contains (' >' )) && m_editData.element ->isLyrics ()) {
3541
- textForPaste = extractSyllable (clipboardText);
3542
- }
3541
+ const QMimeData* mimeData = QApplication::clipboard ()->mimeData ();
3542
+ if (mimeData->hasFormat (TextEditData::mimeRichTextFormat)) {
3543
+ const QString txt = QString::fromUtf8 (mimeData->data (TextEditData::mimeRichTextFormat));
3544
+ toTextBase (m_editData.element )->paste (m_editData, txt);
3545
+ } else {
3546
+ QString clipboardText = mimeData->text ();
3547
+ QString textForPaste = clipboardText;
3548
+ if ((!clipboardText.startsWith (' <' ) || !clipboardText.contains (' >' )) && m_editData.element ->isLyrics ()) {
3549
+ textForPaste = extractSyllable (clipboardText);
3550
+ }
3543
3551
3544
- toTextBase (m_editData.element )->paste (m_editData, textForPaste);
3552
+ toTextBase (m_editData.element )->paste (m_editData, textForPaste);
3545
3553
3546
- if (!textForPaste.isEmpty () && m_editData.element ->isLyrics ()) {
3547
- if (textForPaste.endsWith (' -' )) {
3548
- navigateToNextSyllable ();
3549
- } else if (textForPaste.endsWith (' _' )) {
3550
- addMelisma ();
3551
- } else {
3552
- navigateToLyrics (false , false , false );
3553
- }
3554
+ if (!textForPaste.isEmpty () && m_editData.element ->isLyrics ()) {
3555
+ if (textForPaste.endsWith (' -' )) {
3556
+ navigateToNextSyllable ();
3557
+ } else if (textForPaste.endsWith (' _' )) {
3558
+ addMelisma ();
3559
+ } else {
3560
+ navigateToLyrics (false , false , false );
3561
+ }
3554
3562
3555
- QString textForNextPaste = clipboardText.remove (0 , clipboardText.indexOf (textForPaste) + textForPaste.size ());
3556
- QGuiApplication::clipboard ()->setText (textForNextPaste);
3563
+ QString textForNextPaste = clipboardText.remove (0 , clipboardText.indexOf (textForPaste) + textForPaste.size ());
3564
+ QGuiApplication::clipboard ()->setText (textForNextPaste);
3565
+ }
3557
3566
}
3558
3567
} else {
3559
3568
const QMimeData* mimeData = QApplication::clipboard ()->mimeData ();
0 commit comments