summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2013-08-13 15:35:03 +0200
committerKarsten Heimrich <karsten.heimrich@digia.com>2013-08-14 15:14:50 +0200
commit6ef1700d42114acc472a312184894f383d26afde (patch)
treecf2df8a59d96db0d4d7750f4198d6edfc6a8bdb1 /src
parent266c8c08935918632907d222fcfced0fb1e1b7cc (diff)
Fix broken "Next" button behavior after uncheck/check of a component.
Change-Id: I7cc36df32594a57442bc316e7c271fc00c0ad4a2 Reviewed-by: Niels Weber <niels.weber@digia.com> Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/libs/installer/componentmodel.cpp10
-rw-r--r--src/libs/installer/packagemanagergui.cpp4
2 files changed, 10 insertions, 4 deletions
diff --git a/src/libs/installer/componentmodel.cpp b/src/libs/installer/componentmodel.cpp
index 5285154f6..080e84d85 100644
--- a/src/libs/installer/componentmodel.cpp
+++ b/src/libs/installer/componentmodel.cpp
@@ -325,10 +325,16 @@ void ComponentModel::setRootComponents(QList<QInstaller::Component*> rootCompone
m_uncheckable.clear();
m_indexByNameCache.clear();
m_rootComponentList.clear();
- m_initialCheckedState.clear();
- m_currentCheckedState.clear();
m_modelState = DefaultChecked;
+ // Initialize these with an empty set for every possible state, cause we compare the hashes later in
+ // updateAndEmitModelState(). The comparison than might lead to wrong results if one of the checked
+ // states is absent initially.
+ m_initialCheckedState[Qt::Checked] = ComponentSet();
+ m_initialCheckedState[Qt::Unchecked] = ComponentSet();
+ m_initialCheckedState[Qt::PartiallyChecked] = ComponentSet();
+ m_currentCheckedState = m_initialCheckedState; // both should be equal
+
// show virtual components only in case we run as updater or if the core engine is set to show them
const bool showVirtuals = m_core->isUpdater() || m_core->virtualComponentsVisible();
foreach (Component *const component, rootComponents) {
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index 0ff96b954..8509dc259 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -1112,7 +1112,7 @@ public slots:
void onModelStateChanged(QInstaller::ComponentModel::ModelState state)
{
- q->setModified(state != ComponentModel::DefaultChecked);
+ q->setModified(state.testFlag(ComponentModel::DefaultChecked) == false);
// If all components in the checked list are only checkable when run without forced installation, set
// ComponentModel::AllUnchecked as well, as we cannot uncheck anything. Helps to keep the UI correct.
if ((!m_core->noForceInstallation()) && (m_currentModel->checked() == m_currentModel->uncheckable()))
@@ -1236,7 +1236,7 @@ bool ComponentSelectionPage::isComplete() const
{
if (packageManagerCore()->isInstaller() || packageManagerCore()->isUpdater())
return d->m_currentModel->checked().count();
- return d->m_currentModel->checkedState() != ComponentModel::DefaultChecked;
+ return d->m_currentModel->checkedState().testFlag(ComponentModel::DefaultChecked) == false;
}