From 3bcc07841584673d1bbd4e0c487cc96095466171 Mon Sep 17 00:00:00 2001 From: Peter Hieu Vu Date: Fri, 22 Mar 2019 00:49:18 -0700 Subject: [PATCH] fix #63301: comma shortcuts now save --- mscore/shortcut.cpp | 20 ++++++++++++++------ mscore/shortcut.h | 2 +- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/mscore/shortcut.cpp b/mscore/shortcut.cpp index 4ab59ead7fef..869e9a574511 100644 --- a/mscore/shortcut.cpp +++ b/mscore/shortcut.cpp @@ -4050,7 +4050,7 @@ void Shortcut::write(XmlWriter& xml) const if (_standardKey != QKeySequence::UnknownKey) xml.tag("std", QString("%1").arg(_standardKey)); for (QKeySequence ks : _keys) - xml.tag("seq", Shortcut::keySeqToString(ks, QKeySequence::PortableText)); + xml.tag("seq", Shortcut::keySeqToString(ks, QKeySequence::PortableText, true)); xml.etag(); } @@ -4280,7 +4280,7 @@ void Shortcut::reset() static const QString numPadPrefix("NumPad+"); static const int NUMPADPREFIX_SIZE = 7; // the length in chars of the above string -QString Shortcut::keySeqToString(const QKeySequence& keySeq, QKeySequence::SequenceFormat fmt) +QString Shortcut::keySeqToString(const QKeySequence& keySeq, QKeySequence::SequenceFormat fmt, bool escapeKeyStr /* = false */) { QString s; for (int i = 0; i < KEYSEQ_SIZE; ++i) { @@ -4293,8 +4293,12 @@ QString Shortcut::keySeqToString(const QKeySequence& keySeq, QKeySequence::Seque s += numPadPrefix; code &= ~Qt::KeypadModifier; } - QKeySequence kSeq(code); - s += kSeq.toString(fmt); + QString kStr = QKeySequence(code).toString(fmt); + if (escapeKeyStr) { + kStr.replace("\\", "\\\\"); + kStr.replace(",", "\\,"); + } + s += kStr; } return s; } @@ -4305,12 +4309,16 @@ QKeySequence Shortcut::keySeqFromString(const QString& str, QKeySequence::Sequen for (i = 0; i < KEYSEQ_SIZE; ++i) code[i] = 0; - QStringList strList = str.split(",", QString::SkipEmptyParts, Qt::CaseSensitive); + QStringList strList = str.split(QRegularExpression("(?