summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/component.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/installer/component.cpp')
-rw-r--r--src/libs/installer/component.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/libs/installer/component.cpp b/src/libs/installer/component.cpp
index cb028b940..4d614d242 100644
--- a/src/libs/installer/component.cpp
+++ b/src/libs/installer/component.cpp
@@ -314,6 +314,7 @@ void Component::loadDataFromPackage(const Package &package)
setValue(scSortingPriority, package.data(scSortingPriority).toString());
setValue(scEssential, package.data(scEssential).toString());
+ setValue(scForcedUpdate, package.data(scForcedUpdate).toString());
setValue(scUpdateText, package.data(scUpdateText).toString());
setValue(scNewComponent, package.data(scNewComponent).toString());
setValue(scRequiresAdminRights, package.data(scRequiresAdminRights).toString());
@@ -1341,8 +1342,10 @@ bool Component::isAutoDependOn(const QSet<QString> &componentsToInstall) const
if (componentsToInstall.contains(autoDependOnSet)) {
foreach (const QString &autoDep, autoDependOnSet) {
Component *component = packageManagerCore()->componentByName(autoDep);
- if (component->value(scEssential, scFalse).toLower() == scTrue)
+ if ((component->value(scEssential, scFalse).toLower() == scTrue)
+ || component->isForcedUpdate()) {
return true;
+ }
}
}
return false;
@@ -1449,6 +1452,17 @@ bool Component::componentChangeRequested()
return updateRequested() || isSelectedForInstallation() || uninstallationRequested();
}
+/*!
+ Returns \c true if the component is installed and has a \c ForcedUpdate flag set.
+ ForcedUpdate components will be updated together with essential components before
+ any other component can be updated or installed.
+
+ \sa {component::isForcedUpdate}{component.isForcedUpdate}
+*/
+bool Component::isForcedUpdate()
+{
+ return isInstalled() && (value(scForcedUpdate, scFalse).toLower() == scTrue);
+}
/*!
\sa {component::setUninstalled}{component.setUninstalled}