LanguageClient: make client selector exclusive

Change-Id: Icc97a3d7a651881613ba91b60db8784274462424
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2019-09-18 15:28:15 +02:00
parent c751a165ac
commit ea5eb8890a

View File

@@ -218,13 +218,24 @@ void updateEditorToolBar(Core::IEditor *editor)
const QIcon icon = Utils::Icon({{":/languageclient/images/languageclient.png",
Utils::Theme::IconsBaseColor}})
.icon();
actions[widget] = widget->toolBar()->addAction(icon, client->name(), [document]() {
actions[widget] = widget->toolBar()->addAction(
icon, client->name(), [document]() {
auto menu = new QMenu;
for (auto client : LanguageClientManager::clientsSupportingDocument(document))
menu->addAction(client->name(), [client = QPointer<Client>(client), document]() {
if (client)
auto *clientsGroup = new QActionGroup(menu);
clientsGroup->setExclusive(true);
for (auto client : LanguageClientManager::clientsSupportingDocument(document)) {
auto action = clientsGroup->addAction(client->name());
auto reopen = [action, client = QPointer<Client>(client), document]() {
if (!client)
return;
LanguageClientManager::reOpenDocumentWithClient(document, client);
});
action->setChecked(true);
};
action->setCheckable(true);
action->setChecked(client == LanguageClientManager::clientForDocument(document));
QObject::connect(action, &QAction::triggered, reopen);
}
menu->addActions(clientsGroup->actions());
menu->addAction("Manage...", []() {
Core::ICore::showOptionsDialog(Constants::LANGUAGECLIENT_SETTINGS_PAGE);
});