diff options
| author | Carlo Vanini <silhusk@gmail.com> | 2016-04-15 17:30:25 (GMT) |
|---|---|---|
| committer | Carlo Vanini <silhusk@gmail.com> | 2016-04-15 17:30:25 (GMT) |
| commit | 6db42277651409eeb92fa4f67c64f85434db387e (patch) | |
| tree | ea231a74ed4bc072e491f3fea1fbd8a6132fad98 | |
| parent | e63d3239a7846eb968151ebdd4f12e0921e0f13a (diff) | |
Fix "ReInstall" action not being enabled.
Fix mark/Unmark for ReInstall of a package.
Testing Done:
* select an installed package
* mark for re-install
* mark for keep or click Undo
BUG: 342389
BUG: 342390
REVIEW: 127545
| -rw-r--r-- | src/backend.cpp | 6 | ||||
| -rw-r--r-- | src/package.cpp | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/backend.cpp b/src/backend.cpp index 4fbd382..e01c141 100644 --- a/src/backend.cpp +++ b/src/backend.cpp @@ -830,9 +830,13 @@ void Backend::restoreCacheState(const CacheState &state) if (oldflags == flags) continue; + if ((flags & Package::ToReInstall) && !(oldflags & Package::ToReInstall)) { + deps->SetReInstall(pkg->packageIterator(), false); + } + if (oldflags & Package::ToReInstall) { deps->MarkInstall(pkg->packageIterator(), true); - deps->SetReInstall(pkg->packageIterator(), false); + deps->SetReInstall(pkg->packageIterator(), true); } else if (oldflags & Package::ToInstall) { deps->MarkInstall(pkg->packageIterator(), true); } else if (oldflags & Package::ToRemove) { diff --git a/src/package.cpp b/src/package.cpp index d8305a5..1e43a28 100644 --- a/src/package.cpp +++ b/src/package.cpp @@ -200,7 +200,7 @@ void PackagePrivate::initStaticState(const pkgCache::VerIterator &ver, pkgDepCac // and the cache is reloaded. bool downloadable = true; if (!stateCache.CandidateVer || - stateCache.CandidateVerIter(*backend->cache()->depCache()).Downloadable()) + !stateCache.CandidateVerIter(*backend->cache()->depCache()).Downloadable()) downloadable = false; if (!downloadable) @@ -1300,6 +1300,9 @@ void Package::setAuto(bool flag) void Package::setKeep() { d->backend->cache()->depCache()->MarkKeep(d->packageIter, false); + if (state() & ToReInstall) { + d->backend->cache()->depCache()->SetReInstall(d->packageIter, false); + } if (d->backend->cache()->depCache()->BrokenCount() > 0) { pkgProblemResolver Fix(d->backend->cache()->depCache()); Fix.ResolveByKeep(); |
