[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: =?utf-8?q?=5Bcalligra=5D_libs/kotext/opendocument=3A_Fix_saving_?=
From: Pierre Ducroquet <pinaraf () pinaraf ! info>
Date: 2011-04-14 23:03:59
Message-ID: 20110414230359.303F1A609B () git ! kde ! org
[Download RAW message or body]
Git commit a63ec41e3e4b32641acdfa0eeb6c80e21ce52da6 by Pierre Ducroquet.
Committed on 15/04/2011 at 01:03.
Pushed by ducroquet into branch 'master'.
Fix saving of texts
M +40 -25 libs/kotext/opendocument/KoTextWriter.cpp
http://commits.kde.org/calligra/a63ec41e3e4b32641acdfa0eeb6c80e21ce52da6
diff --git a/libs/kotext/opendocument/KoTextWriter.cpp \
b/libs/kotext/opendocument/KoTextWriter.cpp index d5ab385..76b33e8 100644
--- a/libs/kotext/opendocument/KoTextWriter.cpp
+++ b/libs/kotext/opendocument/KoTextWriter.cpp
@@ -383,6 +383,14 @@ int KoTextWriter::Private::openTagRegion(int position, \
ElementType elementType, int changeId = 0, returnChangeId = 0;
if (!changeTracker) {
+ if (tagInformation.name()) {
+ writer->startElement(tagInformation.name());
+ QPair<QString, QString> attribute;
+ foreach (attribute, tagInformation.attributes()) {
+ writer->addAttribute(attribute.first.toLocal8Bit(), \
attribute.second); + }
+ openedTagStack.push(tagInformation.name());
+ }
return changeId;
}
@@ -1020,7 +1028,10 @@ void KoTextWriter::Private::saveParagraph(const QTextBlock \
&block, int from, int writer->addTextSpan(text);
}
- closeTagRegion(changeId);
+ if (changeTracker)
+ closeTagRegion(changeId);
+ else if (fragmentTagInformation.name())
+ writer->endElement();
} // if (inlineObject)
previousCharFormat = charFormat;
@@ -1034,36 +1045,40 @@ void KoTextWriter::Private::saveParagraph(const QTextBlock \
&block, int from, int }
}
- if (changeTracker && changeTracker->saveFormat() == KoChangeTracker::DELTAXML) {
- QTextBlock nextBlock = block.next();
- if (nextBlock.isValid() && deleteMergeRegionOpened) {
- QTextBlockFormat nextBlockFormat = nextBlock.blockFormat();
- int changeId = \
nextBlockFormat.intProperty(KoCharacterStyle::ChangeTrackerId);
- if (changeId && changeTracker->elementById(changeId)->getChangeType() == \
KoGenChange::DeleteChange) {
- QTextFragment lastFragment = (--block.end()).fragment();
- QTextCharFormat lastFragmentFormat = lastFragment.charFormat();
- int lastFragmentChangeId = \
lastFragmentFormat.intProperty(KoCharacterStyle::ChangeTrackerId);
- if (changeTracker->isDuplicateChangeId(lastFragmentChangeId)) {
- lastFragmentChangeId = \
changeTracker->originalChangeId(lastFragmentChangeId);
- }
- if (lastFragmentChangeId != changeId) {
- QString outputXml("<delta:removed-content \
delta:removal-change-idref=\"" + changeTransTable.value(changeId) + \
"\"/>");
- writer->addCompleteElement(outputXml.toUtf8());
+ if (changeTracker) {
+ if (changeTracker->saveFormat() == KoChangeTracker::DELTAXML) {
+ QTextBlock nextBlock = block.next();
+ if (nextBlock.isValid() && deleteMergeRegionOpened) {
+ QTextBlockFormat nextBlockFormat = nextBlock.blockFormat();
+ int changeId = \
nextBlockFormat.intProperty(KoCharacterStyle::ChangeTrackerId); + if \
(changeId && changeTracker->elementById(changeId)->getChangeType() == \
KoGenChange::DeleteChange) { + QTextFragment lastFragment = \
(--block.end()).fragment(); + QTextCharFormat lastFragmentFormat = \
lastFragment.charFormat(); + int lastFragmentChangeId = \
lastFragmentFormat.intProperty(KoCharacterStyle::ChangeTrackerId); + \
if (changeTracker->isDuplicateChangeId(lastFragmentChangeId)) { + \
lastFragmentChangeId = changeTracker->originalChangeId(lastFragmentChangeId); + \
} + if (lastFragmentChangeId != changeId) {
+ QString outputXml("<delta:removed-content \
delta:removal-change-idref=\"" + changeTransTable.value(changeId) + "\"/>"); + \
writer->addCompleteElement(outputXml.toUtf8()); + }
}
}
}
- }
-
- if (changeTracker && changeTracker->saveFormat() == KoChangeTracker::ODF_1_2) {
- while (int change = changeStack.top()) {
- writer->startElement("text:change-end", false);
- writer->addAttribute("text:change-id", changeTransTable.value(change));
- writer->endElement();
- changeStack.pop();
+ if (changeTracker->saveFormat() == KoChangeTracker::ODF_1_2) {
+ while (int change = changeStack.top()) {
+ writer->startElement("text:change-end", false);
+ writer->addAttribute("text:change-id", \
changeTransTable.value(change)); + writer->endElement();
+ changeStack.pop();
+ }
}
}
- closeTagRegion(changeId);
+ if (changeTracker)
+ closeTagRegion(changeId);
+ else if (blockTagInformation.name())
+ writer->endElement();
}
//Check if the whole Block is a part of a single change
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic