From 337a84328d521ac532fd022e2b17425c0746da1a Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 13 Sep 2015 18:29:21 +0200 Subject: [PATCH] + fixes #0002160: Customised keyboard shortcuts: D, U conflict --- src/Gui/DlgKeyboardImp.cpp | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/Gui/DlgKeyboardImp.cpp b/src/Gui/DlgKeyboardImp.cpp index 262215f09..0b10fa0d0 100644 --- a/src/Gui/DlgKeyboardImp.cpp +++ b/src/Gui/DlgKeyboardImp.cpp @@ -23,6 +23,7 @@ #include "PreCompiled.h" #ifndef _PreComp_ +# include # include # include #endif @@ -307,19 +308,27 @@ void DlgCustomKeyboardImp::on_editShortcut_textChanged(const QString& sc) CommandManager & cCmdMgr = Application::Instance->commandManager(); std::vector cmds = cCmdMgr.getAllCommands(); for (std::vector::iterator it = cmds.begin(); it != cmds.end(); ++it) { - if ((*it)->getAction() && (*it)->getAction()->shortcut() == ks) { - ++countAmbiguous; - ambiguousCommand = QString::fromAscii((*it)->getName()); // store the last one - ambiguousMenu = qApp->translate((*it)->className(), (*it)->getMenuText()); + QList acts; + if ((*it)->getAction()) { + // A command may have several QAction's. So, check all of them if one of them matches (See bug #0002160) + QList acts = (*it)->getAction()->findChildren(); + for (QList::iterator jt = acts.begin(); jt != acts.end(); ++jt) { + if ((*jt)->shortcut() == ks) { + ++countAmbiguous; + ambiguousCommand = QString::fromAscii((*it)->getName()); // store the last one + ambiguousMenu = qApp->translate((*it)->className(), (*it)->getMenuText()); - QTreeWidgetItem* item = new QTreeWidgetItem(assignedTreeWidget); - item->setText(1, qApp->translate((*it)->className(), (*it)->getMenuText())); - item->setToolTip(1, qApp->translate((*it)->className(), (*it)->getToolTipText())); - item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); - item->setSizeHint(0, QSize(32, 32)); - item->setBackgroundColor(0, Qt::lightGray); - if ((*it)->getPixmap()) - item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); + QTreeWidgetItem* item = new QTreeWidgetItem(assignedTreeWidget); + item->setText(1, qApp->translate((*it)->className(), (*it)->getMenuText())); + item->setToolTip(1, qApp->translate((*it)->className(), (*it)->getToolTipText())); + item->setData(1, Qt::UserRole, QByteArray((*it)->getName())); + item->setSizeHint(0, QSize(32, 32)); + item->setBackgroundColor(0, Qt::lightGray); + if ((*it)->getPixmap()) + item->setIcon(0, BitmapFactory().iconFromTheme((*it)->getPixmap())); + break; + } + } } }