diff --git a/akonadi/tagsync.cpp b/akonadi/tagsync.cpp --- a/akonadi/tagsync.cpp +++ b/akonadi/tagsync.cpp @@ -119,13 +119,14 @@ connect(itemFetch, SIGNAL(result(KJob*)), this, SLOT(onJobDone(KJob*))); tagById.remove(tagByRid.value(remoteTag.remoteId()).id()); } else if (tagByGid.contains(remoteTag.gid())) { - //Tag exists but has no rid - //Merge members and set rid + //Tag exists but has no uptodate rid Tag tag = tagByGid.value(remoteTag.gid()); tag.setRemoteId(remoteTag.remoteId()); ItemFetchJob *itemFetch = new ItemFetchJob(tag, this); itemFetch->setProperty("tag", QVariant::fromValue(tag)); - itemFetch->setProperty("merge", true); + // Overwrite changes with the server, ideally we would have a dirty flag at the tag to indecate if changes are outstanding + // and replase false with tag.isDirty() + itemFetch->setProperty("merge", false); itemFetch->fetchScope().setFetchGid(true); connect(itemFetch, SIGNAL(result(KJob*)), this, SLOT(onTagItemsFetchDone(KJob*))); connect(itemFetch, SIGNAL(result(KJob*)), this, SLOT(onJobDone(KJob*)));