diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp index 39a244126104d8f952fd47d8e5afa342dd5ff28f..7e14ddcfd649acde08626a82c70389090b89c35c 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp @@ -179,6 +179,7 @@ void ShortcutSettings::targetIdentifierChanged() else setModified(current, false); current->setText(2, scitem->m_key); + resetCollisionMarker(scitem); markPossibleCollisions(scitem); } } @@ -216,6 +217,7 @@ void ShortcutSettings::importAction() ICore::instance()->resourcePath() + "/schemes/", tr("Keyboard Mapping Scheme (*.kms)")); if (!fileName.isEmpty()) { + CommandsFile cf(fileName); QMap<QString, QKeySequence> mapping = cf.importCommands(); @@ -231,10 +233,13 @@ void ShortcutSettings::importAction() setModified(item->m_item, true); else setModified(item->m_item, false); - - markPossibleCollisions(item); } } + + foreach (ShortcutItem *item, m_scitems) { + resetCollisionMarker(item); + markPossibleCollisions(item); + } } } @@ -246,7 +251,11 @@ void ShortcutSettings::defaultAction() setModified(item->m_item, false); if (item->m_item == commandList()->currentItem()) commandChanged(item->m_item); - resetCollisionMarkers(); + } + + foreach (ShortcutItem *item, m_scitems) { + resetCollisionMarker(item); + markPossibleCollisions(item); } } @@ -314,6 +323,8 @@ void ShortcutSettings::initialize() setModified(item, true); item->setData(0, Qt::UserRole, qVariantFromValue(s)); + + markPossibleCollisions(s); } } @@ -370,8 +381,6 @@ int ShortcutSettings::translateModifiers(Qt::KeyboardModifiers state, return result; } - - void ShortcutSettings::markPossibleCollisions(ShortcutItem *item) { if (item->m_key.isEmpty()) @@ -395,13 +404,20 @@ void ShortcutSettings::markPossibleCollisions(ShortcutItem *item) !item->m_cmd->context().isEmpty())) { currentItem->m_item->setForeground(2, Qt::red); item->m_item->setForeground(2, Qt::red); + } } } } +void ShortcutSettings::resetCollisionMarker(ShortcutItem *item) +{ + item->m_item->setForeground(2, commandList()->palette().foreground()); +} + + void ShortcutSettings::resetCollisionMarkers() { foreach (ShortcutItem *item, m_scitems) - item->m_item->setForeground(2, commandList()->palette().foreground()); + resetCollisionMarker(item); } diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.h b/src/plugins/coreplugin/dialogs/shortcutsettings.h index f4013a187f352a9a4b3ef53aa9d014bd3e7b52bc..161ed2d4a8f379689a7bd7ed9e77e4d9d488ea53 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.h +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.h @@ -94,6 +94,7 @@ private: void handleKeyEvent(QKeyEvent *e); int translateModifiers(Qt::KeyboardModifiers state, const QString &text); void markPossibleCollisions(ShortcutItem *); + void resetCollisionMarker(ShortcutItem *); void resetCollisionMarkers(); QList<ShortcutItem *> m_scitems;