Core: Show keyboard sequence for navigation widgets

Fixes: QTCREATORBUG-26293
Change-Id: Ifc1df96b063365ee5b27684cb4efb33be2608582
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Eike Ziller
2021-09-21 16:21:33 +02:00
parent de3e3e7af1
commit 8437903295
3 changed files with 13 additions and 2 deletions

View File

@@ -26,8 +26,9 @@
#include "navigationsubwidget.h" #include "navigationsubwidget.h"
#include "navigationwidget.h" #include "navigationwidget.h"
#include "inavigationwidgetfactory.h" #include "actionmanager/actionmanager.h"
#include "actionmanager/command.h" #include "actionmanager/command.h"
#include "inavigationwidgetfactory.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
@@ -148,7 +149,15 @@ void NavigationSubWidget::populateSplitMenu()
int count = factoryModel->rowCount(); int count = factoryModel->rowCount();
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
QModelIndex index = factoryModel->index(i, 0); QModelIndex index = factoryModel->index(i, 0);
QAction *action = m_splitMenu->addAction(factoryModel->data(index).toString()); const Id id = factoryModel->data(index, NavigationWidget::FactoryActionIdRole).value<Id>();
Command *command = ActionManager::command(id);
const QString factoryName = factoryModel->data(index).toString();
const QString displayName = command->keySequence().isEmpty()
? factoryName
: QString("%1 (%2)").arg(factoryName,
command->keySequence().toString(
QKeySequence::NativeText));
QAction *action = m_splitMenu->addAction(displayName);
connect(action, &QAction::triggered, this, [this, i]() { emit splitMe(i); }); connect(action, &QAction::triggered, this, [this, i]() { emit splitMe(i); });
} }
} }

View File

@@ -263,6 +263,7 @@ void NavigationWidget::setFactories(const QList<INavigationWidgetFactory *> &fac
QStandardItem *newRow = new QStandardItem(factory->displayName()); QStandardItem *newRow = new QStandardItem(factory->displayName());
newRow->setData(QVariant::fromValue(factory), FactoryObjectRole); newRow->setData(QVariant::fromValue(factory), FactoryObjectRole);
newRow->setData(QVariant::fromValue(factory->id()), FactoryIdRole); newRow->setData(QVariant::fromValue(factory->id()), FactoryIdRole);
newRow->setData(QVariant::fromValue(actionId), FactoryActionIdRole);
newRow->setData(factory->priority(), FactoryPriorityRole); newRow->setData(factory->priority(), FactoryPriorityRole);
d->m_factoryModel->appendRow(newRow); d->m_factoryModel->appendRow(newRow);
} }

View File

@@ -82,6 +82,7 @@ public:
enum FactoryModelRoles { enum FactoryModelRoles {
FactoryObjectRole = Qt::UserRole, FactoryObjectRole = Qt::UserRole,
FactoryIdRole, FactoryIdRole,
FactoryActionIdRole,
FactoryPriorityRole FactoryPriorityRole
}; };