summaryrefslogtreecommitdiff
path: root/writerperfect
diff options
context:
space:
mode:
authorFridrich Štrba <fridrich.strba@bluewin.ch>2012-08-23 14:13:49 +0200
committerFridrich Štrba <fridrich.strba@bluewin.ch>2012-08-23 14:17:02 +0200
commit7afb1fffefb1806205ddcef3cba1d2a559e9b39e (patch)
tree7d4149859c7dc5a4faec0c0e9c3636ad04354fd6 /writerperfect
parent8a274f73a28ee9d358059bfe9ce4395e3e284031 (diff)
Iterate the utf8 correctly + handle tabs too
Change-Id: Ie6a4750ebd04e3b1ed8ad0985e141b6ff2e65e98
Diffstat (limited to 'writerperfect')
-rw-r--r--writerperfect/source/filter/OdgGenerator.cxx21
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)