diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.cpp b/src/plugins/coreplugin/actionmanager/commandmappings.cpp index a8d23bd32ea..a27fac24bde 100644 --- a/src/plugins/coreplugin/actionmanager/commandmappings.cpp +++ b/src/plugins/coreplugin/actionmanager/commandmappings.cpp @@ -33,7 +33,6 @@ #include -#include #include #include #include @@ -242,22 +241,8 @@ bool CommandMappings::filter(const QString &filterString, QTreeWidgetItem *item) { bool visible = filterString.isEmpty(); int columnCount = item->columnCount(); - for (int i = 0; !visible && i < columnCount; ++i) { - QString text = item->text(i); - if (HostOsInfo::isMacHost()) { - // accept e.g. Cmd+E in the filter. the text shows special fancy characters for Cmd - if (i == columnCount - 1) { - QKeySequence key = QKeySequence::fromString(text, QKeySequence::NativeText); - if (!key.isEmpty()) { - text = key.toString(QKeySequence::PortableText); - text.replace(QLatin1String("Ctrl"), QLatin1String("Cmd")); - text.replace(QLatin1String("Meta"), QLatin1String("Ctrl")); - text.replace(QLatin1String("Alt"), QLatin1String("Opt")); - } - } - } - visible |= (bool)text.contains(filterString, Qt::CaseInsensitive); - } + for (int i = 0; !visible && i < columnCount; ++i) + visible |= !filterColumn(filterString, item, i); int childCount = item->childCount(); if (childCount > 0) { @@ -272,6 +257,12 @@ bool CommandMappings::filter(const QString &filterString, QTreeWidgetItem *item) return !visible; } +bool CommandMappings::filterColumn(const QString &filterString, QTreeWidgetItem *item, + int column) const +{ + return !item->text(column).contains(filterString, Qt::CaseInsensitive); +} + void CommandMappings::setModified(QTreeWidgetItem *item , bool modified) { QFont f = item->font(0); diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.h b/src/plugins/coreplugin/actionmanager/commandmappings.h index 6d680cf5fc0..dba27989d98 100644 --- a/src/plugins/coreplugin/actionmanager/commandmappings.h +++ b/src/plugins/coreplugin/actionmanager/commandmappings.h @@ -68,8 +68,9 @@ protected: virtual void exportAction() {} virtual void importAction() {} + virtual bool filterColumn(const QString &filterString, QTreeWidgetItem *item, int column) const; + void filterChanged(const QString &f); - bool filter(const QString &filterString, QTreeWidgetItem *item); virtual void commandChanged(QTreeWidgetItem *current); @@ -85,6 +86,8 @@ protected: void setModified(QTreeWidgetItem *item, bool modified); private: + bool filter(const QString &filterString, QTreeWidgetItem *item); + friend class Internal::CommandMappingsPrivate; Internal::CommandMappingsPrivate *d; }; diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp index ffb7c0ad9f3..1709e5c0b62 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp @@ -39,6 +39,7 @@ #include #include +#include #include #include @@ -215,6 +216,25 @@ bool ShortcutSettingsWidget::hasConflicts() const return false; } +bool ShortcutSettingsWidget::filterColumn(const QString &filterString, QTreeWidgetItem *item, + int column) const +{ + QString text = item->text(column); + if (Utils::HostOsInfo::isMacHost()) { + // accept e.g. Cmd+E in the filter. the text shows special fancy characters for Cmd + if (column == item->columnCount() - 1) { + QKeySequence key = QKeySequence::fromString(text, QKeySequence::NativeText); + if (!key.isEmpty()) { + text = key.toString(QKeySequence::PortableText); + text.replace(QLatin1String("Ctrl"), QLatin1String("Cmd")); + text.replace(QLatin1String("Meta"), QLatin1String("Ctrl")); + text.replace(QLatin1String("Alt"), QLatin1String("Opt")); + } + } + } + return !text.contains(filterString, Qt::CaseInsensitive); +} + void ShortcutSettingsWidget::setKeySequence(const QKeySequence &key) { m_key[0] = m_key[1] = m_key[2] = m_key[3] = 0; diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.h b/src/plugins/coreplugin/dialogs/shortcutsettings.h index a95d26d8a82..d3e63dceff5 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.h +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.h @@ -79,6 +79,8 @@ protected: void defaultAction() override; bool hasConflicts() const override; + bool filterColumn(const QString &filterString, QTreeWidgetItem *item, int column) const override; + private: void initialize(); void handleKeyEvent(QKeyEvent *e);