diff options
author | Luboš Luňák <l.lunak@suse.cz> | 2011-11-29 20:25:39 +0100 |
---|---|---|
committer | Luboš Luňák <l.lunak@suse.cz> | 2011-11-29 21:20:28 +0100 |
commit | dff36f4c4c75a94cb6ef61f34d03fa2503def92a (patch) | |
tree | 2bd7eca6c264b2ba83a1cca707b46a3d5441f11b /starmath/source | |
parent | 34e2e7dd8441148fa8f05c1e9ca324003058ed11 (diff) |
docx m:r can contain multiple m:t
Diffstat (limited to 'starmath/source')
-rw-r--r-- | starmath/source/ooxmlimport.cxx | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/starmath/source/ooxmlimport.cxx b/starmath/source/ooxmlimport.cxx index 300d81860e77..99ba16ac7e86 100644 --- a/starmath/source/ooxmlimport.cxx +++ b/starmath/source/ooxmlimport.cxx @@ -370,13 +370,26 @@ OUString SmOoxmlImport::handleR() // stream.ensureClosingTag( OOX_TOKEN( doc, rFonts )); stream.ensureClosingTag( OOX_TOKEN( doc, rPr )); } - // TODO can there be more t's ? - XmlStream::Tag rtag = stream.ensureOpeningTag( M_TOKEN( t )); - // TODO bail out if failure? - OUString text = rtag.text; - if( rtag.attribute( OOX_TOKEN( xml, space )) != STR( "preserve" )) - text = text.trim(); - stream.ensureClosingTag( M_TOKEN( t )); + OUString text; + while( stream.currentToken() != CLOSING( stream.currentToken())) + { + switch( stream.currentToken()) + { + case OPENING( M_TOKEN( t )): + { + XmlStream::Tag rtag = stream.ensureOpeningTag( M_TOKEN( t )); + if( rtag.attribute( OOX_TOKEN( xml, space )) != STR( "preserve" )) + text += rtag.text.trim(); + else + text += rtag.text; + stream.ensureClosingTag( M_TOKEN( t )); + break; + } + default: + stream.handleUnexpectedTag(); + break; + } + } stream.ensureClosingTag( M_TOKEN( r )); return text; } |