From f819e98d94063cbace128a7b5af95b725d5e19cc Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Fri, 5 Aug 2016 17:13:35 -0700 Subject: [PATCH] Fix menu so that functions indirectly triggered by menu scanning don't inherit the menu group --- libraries/ui/src/ui/Menu.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/libraries/ui/src/ui/Menu.cpp b/libraries/ui/src/ui/Menu.cpp index 985d2f3a02..fcce999839 100644 --- a/libraries/ui/src/ui/Menu.cpp +++ b/libraries/ui/src/ui/Menu.cpp @@ -21,6 +21,8 @@ using namespace ui; +static QList groups; + Menu::Menu() {} void Menu::toggleAdvancedMenus() { @@ -40,13 +42,23 @@ void Menu::saveSettings() { } void Menu::loadAction(Settings& settings, QAction& action) { - if (action.isChecked() != settings.value(action.text(), action.isChecked()).toBool()) { + QString prefix; + for (QString group : groups) { + prefix += group; + prefix += "/"; + } + if (action.isChecked() != settings.value(prefix + action.text(), action.isChecked()).toBool()) { action.trigger(); } } void Menu::saveAction(Settings& settings, QAction& action) { - settings.setValue(action.text(), action.isChecked()); + QString prefix; + for (QString group : groups) { + prefix += group; + prefix += "/"; + } + settings.setValue(prefix + action.text(), action.isChecked()); } void Menu::scanMenuBar(settingsAction modifySetting) { @@ -57,7 +69,9 @@ void Menu::scanMenuBar(settingsAction modifySetting) { } void Menu::scanMenu(QMenu& menu, settingsAction modifySetting, Settings& settings) { - settings.beginGroup(menu.title()); + groups.push_back(menu.title()); + +// settings.beginGroup(menu.title()); foreach (QAction* action, menu.actions()) { if (action->menu()) { scanMenu(*action->menu(), modifySetting, settings); @@ -65,7 +79,9 @@ void Menu::scanMenu(QMenu& menu, settingsAction modifySetting, Settings& setting modifySetting(settings, *action); } } - settings.endGroup(); +// settings.endGroup(); + + groups.pop_back(); } void Menu::addDisabledActionAndSeparator(MenuWrapper* destinationMenu, const QString& actionName,