Skip to content

Commit f758155

Browse files
Kakueeendeepin-mozart
authored andcommitted
fix: [shortcut] Fix shortcut key import issue
When the imported shortcut key has a format problem, the shortcut key is displayed incorrectly Log: fix bug Bug: https://pms.uniontech.com/bug-view-277815.html
1 parent 41effa0 commit f758155

1 file changed

Lines changed: 20 additions & 10 deletions

File tree

src/plugins/option/optioncore/mainframe/shortcutsettingwidget.cpp

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)