diff options
author | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2012-08-23 14:13:49 +0200 |
---|---|---|
committer | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2012-08-23 14:17:02 +0200 |
commit | 7afb1fffefb1806205ddcef3cba1d2a559e9b39e (patch) | |
tree | 7d4149859c7dc5a4faec0c0e9c3636ad04354fd6 /writerperfect | |
parent | 8a274f73a28ee9d358059bfe9ce4395e3e284031 (diff) |
Iterate the utf8 correctly + handle tabs too
Change-Id: Ie6a4750ebd04e3b1ed8ad0985e141b6ff2e65e98
Diffstat (limited to 'writerperfect')
-rw-r--r-- | writerperfect/source/filter/OdgGenerator.cxx | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/writerperfect/source/filter/OdgGenerator.cxx b/writerperfect/source/filter/OdgGenerator.cxx index e8f365bda5eb..0d39862788f0 100644 --- a/writerperfect/source/filter/OdgGenerator.cxx +++ b/writerperfect/source/filter/OdgGenerator.cxx @@ -1750,12 +1750,11 @@ void OdgGenerator::endTextSpan() void OdgGenerator::insertText(const WPXString &text) { - int length = text.len(); WPXString out; - for (int curr = 0; curr < length; ++curr) + WPXString::Iter i(text); + for (i.rewind(); i.next();) { - char ch = text.cstr()[curr]; - if (ch == '\n') + if ((*i()) == '\n' || (*i()) == '\t') { if (out.len() != 0) { @@ -1763,12 +1762,20 @@ void OdgGenerator::insertText(const WPXString &text) mpImpl->mBodyElements.push_back(pText); out.clear(); } - mpImpl->mBodyElements.push_back(new TagOpenElement("text:line-break")); - mpImpl->mBodyElements.push_back(new TagCloseElement("text:line-break")); + if ((*i()) == '\n') + { + mpImpl->mBodyElements.push_back(new TagOpenElement("text:line-break")); + mpImpl->mBodyElements.push_back(new TagCloseElement("text:line-break")); + } + else if ((*i()) == '\t') + { + mpImpl->mBodyElements.push_back(new TagOpenElement("text:tab")); + mpImpl->mBodyElements.push_back(new TagCloseElement("text:tab")); + } } else { - out.append(ch); + out.append(i()); } } if (out.len() != 0) |