From 595a1b3a0e5fb098211441849a3993193beb5787 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Thu, 13 Dec 2018 16:28:53 +0100 Subject: Profile picker menu: use QActionGroup instead of QRadioButton --- lib/web/profilemanager.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/web/profilemanager.cpp b/lib/web/profilemanager.cpp index 6e6281b..0bae251 100644 --- a/lib/web/profilemanager.cpp +++ b/lib/web/profilemanager.cpp @@ -10,8 +10,6 @@ #include "webprofile.h" #include #include -#include -#include ProfileManager::ProfileManager(const QHash &profileSection, QObject *parent) : QObject(parent) @@ -115,20 +113,22 @@ void ProfileManager::deleteProfile(const QString &id) void ProfileManager::profilePickerMenu(QMenu *menu, WebProfile *current, std::function callback) const { + auto *profileGroup = new QActionGroup(menu); + for(const auto &profileData : m_profiles) { WebProfile *profile = profileData.second->profile; - auto *profileButton = new QRadioButton(profile->name(), menu); - profileButton->setChecked(profile == current); - - auto *action = new QWidgetAction(menu); - action->setDefaultWidget(profileButton); - connect(profileButton, &QRadioButton::clicked, profile, [profile, callback]() { + auto *action = menu->addAction(profile->name(), profile, [profile, callback]() { callback(profile); }); + action->setCheckable(true); + profileGroup->addAction(action); - menu->addAction(action); + if(profile == current) + action->setChecked(true); } + + connect(menu, &QMenu::aboutToHide, profileGroup, &QActionGroup::deleteLater); } QMenu *ProfileManager::createProfileMenu(std::function callback, QWidget *parent) const -- cgit v1.2.1