From 505801c3a58f54133d1fa445a108a49c267e5331 Mon Sep 17 00:00:00 2001 From: Philippe Renon Date: Thu, 19 Mar 2015 08:57:37 +0100 Subject: [PATCH] OP-1797 avoid redundant calls to loadConfiguration when setting a configuration on a gadget --- .../src/plugins/coreplugin/uavgadgetdecorator.cpp | 12 +++++++++--- .../plugins/coreplugin/uavgadgetinstancemanager.cpp | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/coreplugin/uavgadgetdecorator.cpp b/ground/openpilotgcs/src/plugins/coreplugin/uavgadgetdecorator.cpp index e9111c1b4..bca700785 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/uavgadgetdecorator.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/uavgadgetdecorator.cpp @@ -44,7 +44,7 @@ UAVGadgetDecorator::UAVGadgetDecorator(IUAVGadget *gadget, QListsetMinimumContentsLength(15); foreach(IUAVGadgetConfiguration * config, *m_configurations) m_toolbar->addItem(config->name()); - connect(m_toolbar, SIGNAL(activated(int)), this, SLOT(loadConfiguration(int))); + connect(m_toolbar, SIGNAL(currentIndexChanged(int)), this, SLOT(loadConfiguration(int))); updateToolbar(); } @@ -63,15 +63,22 @@ void UAVGadgetDecorator::loadConfiguration(int index) void UAVGadgetDecorator::loadConfiguration(IUAVGadgetConfiguration *config) { + if (m_activeConfiguration == config) { + return; + } m_activeConfiguration = config; int index = m_toolbar->findText(config->name()); - m_toolbar->setCurrentIndex(index); + if (m_toolbar->currentIndex() != index) { + m_toolbar->setCurrentIndex(index); + } m_gadget->loadConfiguration(config); } void UAVGadgetDecorator::configurationChanged(IUAVGadgetConfiguration *config) { if (config == m_activeConfiguration) { + // force a configuration reload + m_activeConfiguration = NULL; loadConfiguration(config); } } @@ -133,7 +140,6 @@ void UAVGadgetDecorator::restoreState(QSettings *qSettings) foreach(IUAVGadgetConfiguration * config, *m_configurations) { if (config->name() == configName) { - m_activeConfiguration = config; loadConfiguration(config); break; } diff --git a/ground/openpilotgcs/src/plugins/coreplugin/uavgadgetinstancemanager.cpp b/ground/openpilotgcs/src/plugins/coreplugin/uavgadgetinstancemanager.cpp index 89b31bf08..17bf5a187 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/uavgadgetinstancemanager.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/uavgadgetinstancemanager.cpp @@ -166,7 +166,7 @@ void UAVGadgetInstanceManager::readConfigs_1_1_0(QSettings *qs) configs = qs->childGroups(); foreach(QString configName, configs) { - qDebug() << "Loading config: " << classId << "," << configName; + qDebug().nospace() << "Loading config: " << classId << ", " << configName; qs->beginGroup(configName); bool locked = qs->value("config.locked").toBool(); configInfo.setNameOfConfigurable(classId + "-" + configName);