@@ -230,10 +230,17 @@ void ShortcutSettingWidgetPrivate::updateShortcut(QTreeWidgetItem *item, const Q
230230 if (!scItem)
231231 return ;
232232
233- setModified (item, scItem->cmd ->defaultKeySequences () != keyList);
234- scItem->shortcutKeys = keyList;
233+ // remove empty QKeySequence
234+ QList<QKeySequence> tmpKeyList = keyList;
235+ auto iter = std::remove_if (tmpKeyList.begin (), tmpKeyList.end (), [](const QKeySequence &key) {
236+ return key.isEmpty ();
237+ });
238+ tmpKeyList.erase (iter, tmpKeyList.end ());
239+
240+ setModified (item, scItem->cmd ->defaultKeySequences () != tmpKeyList);
241+ scItem->shortcutKeys = tmpKeyList;
235242 commandWidget->removeItemWidget (item, 2 );
236- if (keyList .isEmpty ()) {
243+ if (tmpKeyList .isEmpty ()) {
237244 item->setText (2 , " " );
238245 return ;
239246 }
@@ -385,14 +392,17 @@ void ShortcutSettingWidgetPrivate::importAction()
385392 const QVariant v = settings.value (key);
386393 if (QMetaType::Type (v.type ()) == QMetaType::QStringList) {
387394 auto list = v.toStringList ();
388- QList<QKeySequence> keySequenceList;
389- std::transform (list. begin (), list. end (), std::back_inserter (keySequenceList),
390- []( const QString &s) {
391- return QKeySequence::fromString (s) ;
392- }) ;
393- mapping. insert (key, keySequenceList);
395+ for ( const auto &str : list) {
396+ auto shortcut = QKeySequence::fromString (str);
397+ if (!shortcut. isEmpty () && shortcut. toString (). isEmpty ())
398+ continue ;
399+ mapping[key] << shortcut ;
400+ }
394401 } else {
395- mapping.insert (key, { QKeySequence::fromString (v.toString ()) });
402+ auto shortcut = QKeySequence::fromString (v.toString ());
403+ if (!shortcut.isEmpty () && shortcut.toString ().isEmpty ())
404+ continue ;
405+ mapping[key] << shortcut;
396406 }
397407 }
398408 settings.endGroup ();
0 commit comments