From 5d4edf718fd06fd80b61acc1e1168ac904ee8cda Mon Sep 17 00:00:00 2001 From: Daniel Molkentin <daniel.molkentin@nokia.com> Date: Tue, 13 Apr 2010 17:37:58 +0200 Subject: [PATCH] Shortcut dialog: Fix collision detection. Collisions are now also marked in the standard shortcuts. --- .../coreplugin/dialogs/shortcutsettings.cpp | 28 +++++++++++++++---- .../coreplugin/dialogs/shortcutsettings.h | 1 + 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp index 39a24412610..7e14ddcfd64 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 f4013a187f3..161ed2d4a8f 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; -- GitLab