<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="http://git.reviewboard.kde.org/r/104074/">http://git.reviewboard.kde.org/r/104074/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On February 26th, 2012, 4:16 a.m., <b>Thorsten Zachmann</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="http://git.reviewboard.kde.org/r/104074/diff/2/?file=51062#file51062line1576" style="color: black; font-weight: bold; text-decoration: underline;">libs/flake/KoShape.cpp</a>
<span style="font-weight: normal;">
(Diff revision 2)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void KoShape::loadOdfGluePoints(const KoXmlElement &element, KoShapeLoadingContext &context)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1574</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">const</span> <span class="n">QString</span> <span class="n">id</span> <span class="o">=</span> <span class="n">child</span><span class="p">.</span><span class="n">attributeNS</span><span class="p">(</span><span class="n">KoXmlNS</span><span class="o">::</span><span class="n">draw</span><span class="p">,</span> <span class="s">"id"</span><span class="p">,</span> <span class="n">QString</span><span class="p">());</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1575</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">KoElementReference</span> <span class="n">ref</span><span class="p">;</span></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1576</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">const</span> <span class="n">QString</span> <span class="n">id</span> <span class="o">=</span> <span class="n">ref</span><span class="p">.</span><span class="n">loadOdf</span><span class="p">(</span><span class="n">child</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span></pre></td>
</tr>
</tbody>
</table>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">According to ODF 19.187.2 <draw:glue-point> does not support xml:id. Please revert this change. It does not reference a different object but is a number and therefore it is only draw:id.
I just see that it also wrongly writes out an xml:id. Maybe when you are on it can you please remove this.
</pre>
</blockquote>
</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Well, 19,187 also says:
The draw:id attribute specifies identifiers for draw elements other than <draw:glue-point>.
OpenDocument consumers shall ignore a draw:id attribute if it occurs on a draw element with
an xml:id attribute value.
OpenDocument producers may write draw:id attributes for any draw element in addition to an
xml:id attribute.
The value of a draw:id attribute shall equal the value of an xml:id attribute on the same
element.
The draw:id attribute is deprecated in favor of xml:id. 19.914
So, I'd say that saving xml:id is the right thing to do; for loading, KoElementReference can load draw:id just fine.</pre>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On February 26th, 2012, 4:16 a.m., <b>Thorsten Zachmann</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="http://git.reviewboard.kde.org/r/104074/diff/2/?file=51066#file51066line152" style="color: black; font-weight: bold; text-decoration: underline;">libs/flake/KoShapeSavingContext.cpp</a>
<span style="font-weight: normal;">
(Diff revision 2)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void KoShapeSavingContext::addOption(ShapeSavingOption option)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">143</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QMap</span><span class="o"><</span><span class="k">const</span> <span class="n">KoShape</span> <span class="o">*</span><span class="p">,</span> <span class="n">QString</span><span class="o">>::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">(</span><span class="n">d</span><span class="o">-></span><span class="n">drawIds</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">shape</span><span class="p">));</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">147</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">counter</span><span class="p">)</span> <span class="p">{</span></pre></td>
</tr>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">144</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">it</span> <span class="o">==</span> <span class="n">d</span><span class="o">-></span><span class="n">drawIds</span><span class="p">.</span><span class="n">end</span><span class="p">())</span> <span class="p">{</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">148</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">prefix</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">());</span></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#ebb1ba" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">145</font></th>
<td bgcolor="#ffc5ce" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">insert</span> <span class="o">==</span> <span class="kc">true</span><span class="p">)</span> <span class="p">{</span></pre></td>
<th bgcolor="#ebb1ba" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#ffc5ce" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
</tr>
<tr>
<th bgcolor="#ebb1ba" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">146</font></th>
<td bgcolor="#ffc5ce" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-></span><span class="n">drawIds</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">shape</span><span class="p">,</span> <span class="n">QString</span><span class="p">(</span><span class="s">"shape%1"</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="o">++</span><span class="n">d</span><span class="o">-></span><span class="n">drawId</span><span class="p">));</span></pre></td>
<th bgcolor="#ebb1ba" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#ffc5ce" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
</tr>
<tr>
<th bgcolor="#ebb1ba" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">147</font></th>
<td bgcolor="#ffc5ce" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></pre></td>
<th bgcolor="#ebb1ba" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#ffc5ce" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
</tr>
<tr>
<th bgcolor="#ebb1ba" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">148</font></th>
<td bgcolor="#ffc5ce" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span></pre></td>
<th bgcolor="#ebb1ba" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#ffc5ce" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">149</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">149</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
</tr>
</tbody>
</table>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I think this should be changed to
Q_ASSERT(!counter || counter && !prefix.empty());
which can be shorten to
Q_ASSERT(!counter || !prefix.empty());
As then there is no useless if in release mode.</pre>
</blockquote>
</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Though it's okay to have a prefix when not using the counter.</pre>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On February 26th, 2012, 4:16 a.m., <b>Thorsten Zachmann</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="http://git.reviewboard.kde.org/r/104074/diff/2/?file=51066#file51066line166" style="color: black; font-weight: bold; text-decoration: underline;">libs/flake/KoShapeSavingContext.cpp</a>
<span style="font-weight: normal;">
(Diff revision 2)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void KoShapeSavingContext::addOption(ShapeSavingOption option)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">157</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-></span><span class="n">references</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">referent</span><span class="p">)</span> <span class="o">&&</span> <span class="o">!</span><span class="n">insert</span><span class="p">)</span> <span class="p">{</span></pre></td>
</tr>
</tbody>
</table>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">It is not needed to check that the referent is not in yet as it is already checked some lines above.</pre>
</blockquote>
</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I moved the insert bool away and created a new method for the don't-insert case.</pre>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On February 26th, 2012, 4:16 a.m., <b>Thorsten Zachmann</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="http://git.reviewboard.kde.org/r/104074/diff/2/?file=51066#file51066line207" style="color: black; font-weight: bold; text-decoration: underline;">libs/flake/KoShapeSavingContext.cpp</a>
<span style="font-weight: normal;">
(Diff revision 2)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void KoShapeSavingContext::addOption(ShapeSavingOption option)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">196</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-></span><span class="n">referenceCounters</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">prefix</span><span class="p">))</span> <span class="p">{</span></pre></td>
</tr>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">197</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">d</span><span class="o">-></span><span class="n">referenceCounters</span><span class="p">[</span><span class="n">prefix</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></td>
</tr>
</tbody>
</table>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">If you use iterators one lookup into the map can be avoided. </pre>
</blockquote>
</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I prefer this way... It's easier to read, and I don't think the performance difference will be noticeable.</pre>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On February 26th, 2012, 4:16 a.m., <b>Thorsten Zachmann</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="http://git.reviewboard.kde.org/r/104074/diff/2/?file=51090#file51090line711" style="color: black; font-weight: bold; text-decoration: underline;">libs/kotext/opendocument/KoTextWriter_p.cpp</a>
<span style="font-weight: normal;">
(Diff revision 2)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void KoTextWriter::Private::saveParagraph(const QTextBlock &block, int from, int to)</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">708</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span> <span class="k">const</span> <span class="n">KoTextBlockData</span> <span class="o">*</span><span class="n">blockData</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o"><</span><span class="k">const</span> <span class="n">KoTextBlockData</span> <span class="o">*></span><span class="p">(</span><span class="n">block</span><span class="p">.</span><span class="n">userData</span><span class="p">()))</span> <span class="p">{</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">682</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">KoElementReference</span> <span class="n">xmlid</span><span class="p">;</span></pre></td>
</tr>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">709</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="c1">// text:id is deprecated. if present, it must have the same value as</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">683</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">xmlid</span><span class="p">.</span><span class="n">invalidate</span><span class="p">();</span></pre></td>
</tr>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">710</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="c1">// xml:id</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">684</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
</tr>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">711</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">writer</span><span class="o">-></span><span class="n">addAttribute</span><span class="p">(</span><span class="s">"xml:id"</span><span class="p">,</span> <span class="n">context</span><span class="p">.</span><span class="n">subId</span><span class="p">(</span><span class="n">blockData</span><span class="p">));</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">685</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="k">const</span> <span class="n">KoTextBlockData</span> <span class="o">*</span><span class="n">blockData</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o"><</span><span class="k">const</span> <span class="n">KoTextBlockData</span> <span class="o">*></span><span class="p">(</span><span class="n">block</span><span class="p">.</span><span class="n">userData</span><span class="p">()))</span> <span class="p">{</span></pre></td>
</tr>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">712</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">writer</span><span class="o">-></span><span class="n">addAttribute</span><span class="p">(</span><span class="s">"text:id"</span><span class="p">,</span> <span class="n">context</span><span class="p">.</span><span class="n">subId</span><span class="p">(</span><span class="n">blockData</span><span class="p">));</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">686</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">blockData</span><span class="o">-></span><span class="n">saveXmlID</span><span class="p">())</span> <span class="p">{</span></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">687</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">xmlid</span> <span class="o">=</span> <span class="n">context</span><span class="p">.</span><span class="n">xmlid</span><span class="p">(</span><span class="n">blockData</span><span class="p">);</span></pre></td>
</tr>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">688</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">xmlid</span><span class="p">.</span><span class="n">saveOdf</span><span class="p">(</span><span class="n">writer</span><span class="p">,</span> <span class="n">KoElementReference</span><span class="o">::</span><span class="n">TEXTID</span><span class="p">);</span></pre></td>
</tr>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">689</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">713</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">690</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">714</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">691</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">715</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">changeTracker</span> <span class="o">&&</span> <span class="n">changeTracker</span><span class="o">-></span><span class="n">saveFormat</span><span class="p">()</span> <span class="o">==</span> <span class="n">KoChangeTracker</span><span class="o">::</span><span class="n">DELTAXML</span><span class="p">)</span> <span class="p">{</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">692</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">changeTracker</span> <span class="o">&&</span> <span class="n">changeTracker</span><span class="o">-></span><span class="n">saveFormat</span><span class="p">()</span> <span class="o">==</span> <span class="n">KoChangeTracker</span><span class="o">::</span><span class="n">DELTAXML</span><span class="p">)</span> <span class="p">{</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">716</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextBlock</span> <span class="n">previousBlock</span> <span class="o">=</span> <span class="n">block</span><span class="p">.</span><span class="n">previous</span><span class="p">();</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">693</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextBlock</span> <span class="n">previousBlock</span> <span class="o">=</span> <span class="n">block</span><span class="p">.</span><span class="n">previous</span><span class="p">();</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">717</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">previousBlock</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span> <span class="p">{</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">694</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">previousBlock</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span> <span class="p">{</span></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">718</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextBlockFormat</span> <span class="n">blockFormat</span> <span class="o">=</span> <span class="n">block</span><span class="p">.</span><span class="n">blockFormat</span><span class="p">();</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">695</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextBlockFormat</span> <span class="n">blockFormat</span> <span class="o">=</span> <span class="n">block</span><span class="p">.</span><span class="n">blockFormat</span><span class="p">();</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">719</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="kt">int</span> <span class="n">changeId</span> <span class="o">=</span> <span class="n">blockFormat</span><span class="p">.</span><span class="n">intProperty</span><span class="p">(</span><span class="n">KoCharacterStyle</span><span class="o">::</span><span class="n">ChangeTrackerId</span><span class="p">);</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">696</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="kt">int</span> <span class="n">changeId</span> <span class="o">=</span> <span class="n">blockFormat</span><span class="p">.</span><span class="n">intProperty</span><span class="p">(</span><span class="n">KoCharacterStyle</span><span class="o">::</span><span class="n">ChangeTrackerId</span><span class="p">);</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">720</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">changeId</span> <span class="o">&&</span> <span class="n">changeTracker</span><span class="o">-></span><span class="n">elementById</span><span class="p">(</span><span class="n">changeId</span><span class="p">)</span><span class="o">-></span><span class="n">getChangeType</span><span class="p">()</span> <span class="o">==</span> <span class="n">KoGenChange</span><span class="o">::</span><span class="n">DeleteChange</span><span class="p">)</span> <span class="p">{</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">697</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">changeId</span> <span class="o">&&</span> <span class="n">changeTracker</span><span class="o">-></span><span class="n">elementById</span><span class="p">(</span><span class="n">changeId</span><span class="p">)</span><span class="o">-></span><span class="n">getChangeType</span><span class="p">()</span> <span class="o">==</span> <span class="n">KoGenChange</span><span class="o">::</span><span class="n">DeleteChange</span><span class="p">)</span> <span class="p">{</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">721</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextFragment</span> <span class="n">firstFragment</span> <span class="o">=</span> <span class="p">(</span><span class="n">block</span><span class="p">.</span><span class="n">begin</span><span class="p">()).</span><span class="n">fragment</span><span class="p">();</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">698</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextFragment</span> <span class="n">firstFragment</span> <span class="o">=</span> <span class="p">(</span><span class="n">block</span><span class="p">.</span><span class="n">begin</span><span class="p">()).</span><span class="n">fragment</span><span class="p">();</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">722</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextCharFormat</span> <span class="n">firstFragmentFormat</span> <span class="o">=</span> <span class="n">firstFragment</span><span class="p">.</span><span class="n">charFormat</span><span class="p">();</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">699</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextCharFormat</span> <span class="n">firstFragmentFormat</span> <span class="o">=</span> <span class="n">firstFragment</span><span class="p">.</span><span class="n">charFormat</span><span class="p">();</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">723</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="kt">int</span> <span class="n">firstFragmentChangeId</span> <span class="o">=</span> <span class="n">firstFragmentFormat</span><span class="p">.</span><span class="n">intProperty</span><span class="p">(</span><span class="n">KoCharacterStyle</span><span class="o">::</span><span class="n">ChangeTrackerId</span><span class="p">);</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">700</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="kt">int</span> <span class="n">firstFragmentChangeId</span> <span class="o">=</span> <span class="n">firstFragmentFormat</span><span class="p">.</span><span class="n">intProperty</span><span class="p">(</span><span class="n">KoCharacterStyle</span><span class="o">::</span><span class="n">ChangeTrackerId</span><span class="p">);</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">724</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">changeTracker</span><span class="o">-></span><span class="n">isDuplicateChangeId</span><span class="p">(</span><span class="n">firstFragmentChangeId</span><span class="p">))</span> <span class="p">{</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">701</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">changeTracker</span><span class="o">-></span><span class="n">isDuplicateChangeId</span><span class="p">(</span><span class="n">firstFragmentChangeId</span><span class="p">))</span> <span class="p">{</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">725</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">firstFragmentChangeId</span> <span class="o">=</span> <span class="n">changeTracker</span><span class="o">-></span><span class="n">originalChangeId</span><span class="p">(</span><span class="n">firstFragmentChangeId</span><span class="p">);</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">702</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">firstFragmentChangeId</span> <span class="o">=</span> <span class="n">changeTracker</span><span class="o">-></span><span class="n">originalChangeId</span><span class="p">(</span><span class="n">firstFragmentChangeId</span><span class="p">);</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">726</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">703</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">727</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">firstFragmentChangeId</span> <span class="o">!=</span> <span class="n">changeId</span><span class="p">)</span> <span class="p">{</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">704</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">firstFragmentChangeId</span> <span class="o">!=</span> <span class="n">changeId</span><span class="p">)</span> <span class="p">{</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">728</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QString</span> <span class="n">outputXml</span><span class="p">(</span><span class="s">"<delta:removed-content delta:removal-change-idref=</span><span class="se">\"</span><span class="s">"</span> <span class="o">+</span> <span class="n">changeTransTable</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">changeId</span><span class="p">)</span> <span class="o">+</span> <span class="s">"</span><span class="se">\"</span><span class="s">/>"</span><span class="p">);</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">705</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QString</span> <span class="n">outputXml</span><span class="p">(</span><span class="s">"<delta:removed-content delta:removal-change-idref=</span><span class="se">\"</span><span class="s">"</span> <span class="o">+</span> <span class="n">changeTransTable</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">changeId</span><span class="p">)</span> <span class="o">+</span> <span class="s">"</span><span class="se">\"</span><span class="s">/>"</span><span class="p">);</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">729</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">writer</span><span class="o">-></span><span class="n">addCompleteElement</span><span class="p">(</span><span class="n">outputXml</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">706</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">writer</span><span class="o">-></span><span class="n">addCompleteElement</span><span class="p">(</span><span class="n">outputXml</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">730</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">707</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">731</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">708</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">732</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">709</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">733</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">710</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="p">}</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">734</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">711</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">735</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="c1">// Write the fragments and their formats</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">712</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="c1">// Write the fragments and their formats</span></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">736</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextCharFormat</span> <span class="n">blockCharFormat</span> <span class="o">=</span> <span class="n">cursor</span><span class="p">.</span><span class="n">blockCharFormat</span><span class="p">();</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">713</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextCharFormat</span> <span class="n">blockCharFormat</span> <span class="o">=</span> <span class="n">cursor</span><span class="p">.</span><span class="n">blockCharFormat</span><span class="p">();</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">737</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextCharFormat</span> <span class="n">previousCharFormat</span><span class="p">;</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">714</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextCharFormat</span> <span class="n">previousCharFormat</span><span class="p">;</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">738</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextBlock</span><span class="o">::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">;</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">715</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">QTextBlock</span><span class="o">::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">;</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">739</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">KoTextInlineRdf</span><span class="o">*</span> <span class="n">inlineRdf</span> <span class="o">=</span> <span class="n">KoTextInlineRdf</span><span class="o">::</span><span class="n">tryToGetInlineRdf</span><span class="p">(</span><span class="n">blockCharFormat</span><span class="p">))</span> <span class="p">{</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">716</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="k">if</span> <span class="p">(</span><span class="n">KoTextInlineRdf</span><span class="o">*</span> <span class="n">inlineRdf</span> <span class="o">=</span> <span class="n">KoTextInlineRdf</span><span class="o">::</span><span class="n">tryToGetInlineRdf</span><span class="p">(</span><span class="n">blockCharFormat</span><span class="p">))</span> <span class="p">{</span></pre></td>
</tr>
<tr>
<th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">740</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="c1">// Write xml:id here for Rdf</span></pre></td>
<th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">717</font></th>
<td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="c1">// Write xml:id here for Rdf</span></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">741</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">kDebug</span><span class="p">(</span><span class="mi">30015</span><span class="p">)</span> <span class="o"><<</span> <span class="s">"have inline rdf xmlid:"</span> <span class="o"><<</span> <span class="n">inlineRdf</span><span class="o">-></span><span class="n">xmlId</span><span class="p">();</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">718</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">kDebug</span><span class="p">(</span><span class="mi">30015</span><span class="p">)</span> <span class="o"><<</span> <span class="s">"have inline rdf xmlid:"</span> <span class="o"><<</span> <span class="n">inlineRdf</span><span class="o">-></span><span class="n">xmlId</span><span class="p">()</span><span class="hl"> </span><span class="o"><span class="hl"><<</span></span><span class="hl"> </span><span class="s"><span class="hl">"active xml id"</span></span><span class="hl"> </span><span class="o"><span class="hl"><<</span></span><span class="hl"> </span><span class="n"><span class="hl">xmlid</span></span><span class="p"><span class="hl">.</span></span><span class="n"><span class="hl">toString</span></span><span class="p"><span class="hl">()</span>;</span></pre></td>
</tr>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">742</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">inlineRdf</span><span class="o">-></span><span class="n">saveOdf</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">writer</span><span class="p">);</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">719</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">inlineRdf</span><span class="o">-></span><span class="n">saveOdf</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">writer</span><span class="p"><span class="hl">,</span></span><span class="hl"> </span><span class="n"><span class="hl">xmlid</span></span><span class="p">);</span></pre></td>
</tr>
</tbody>
</table>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This looks somewhat suspicious. I don't know the RDF stuff well enough to be sure but should it not check if there is a inlineRdf and add a xmlid in that case or is that done in this code</pre>
</blockquote>
</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">no, this is fine; if the saveOdf method takes the xml id that was generated and will later do the translation table thingie.</pre>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On February 26th, 2012, 4:16 a.m., <b>Thorsten Zachmann</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="http://git.reviewboard.kde.org/r/104074/diff/2/?file=51109#file51109line93" style="color: black; font-weight: bold; text-decoration: underline;">stage/part/animations/KPrAnimationBase.cpp</a>
<span style="font-weight: normal;">
(Diff revision 2)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">int KPrAnimationBase::animationDuration() const</pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">85</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">writer</span><span class="p">.</span><span class="n">addAttribute</span><span class="p">(</span><span class="s">"smil:targetElement"</span><span class="p">,</span> <span class="n">paContext</span><span class="p">.</span><span class="n"><span class="hl">subI</span>d</span><span class="p">(</span><span class="n">m_shapeAnimation</span><span class="o">-></span><span class="n">textBlockData</span><span class="p">(),</span> <span class="kc">false</span><span class="p">));</span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">89</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">writer</span><span class="p">.</span><span class="n">addAttribute</span><span class="p">(</span><span class="s">"smil:targetElement"</span><span class="p">,</span> <span class="n">paContext</span><span class="p">.</span><span class="n"><span class="hl">xmli</span>d</span><span class="p">(</span><span class="n">m_shapeAnimation</span><span class="o">-></span><span class="n">textBlockData</span><span class="p">(),</span> <span class="s"><span class="hl">"shape"</span></span><span class="p"><span class="hl">,</span></span><span class="hl"> </span><span class="kc"><span class="hl">true</span></span><span class="p"><span class="hl">,</span></span><span class="hl"> </span><span class="kc">false</span><span class="p">)<span class="hl">.</span></span><span class="n"><span class="hl">toString</span></span><span class="p"><span class="hl">()</span>);</span></pre></td>
</tr>
</tbody>
</table>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Setting the parameter shape is a bit misleading her as it does not read anything that is a shape here.</pre>
</blockquote>
</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I addewd a new method existingXmlid to KoShapeSavingContext which makes the meaning here much clearer.</pre>
<br />
<p>- Boudewijn</p>
<br />
<p>On February 25th, 2012, 3:12 p.m., Boudewijn Rempt wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
<tr>
<td>
<div>Review request for Calligra.</div>
<div>By Boudewijn Rempt.</div>
<p style="color: grey;"><i>Updated Feb. 25, 2012, 3:12 p.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">draw:id and text:id are deprecated and to be replaced by xml:id. This patch creates a new class KoElementReference that encapsulates loading and saving all three tags, as well as automatically generating a unique id. This is used to make sure that if two items want to save an xml:id on the same element, we only have one, unique tag saved.
I'm not completely happy yet, since parts of KoShapeSavingContext still create numbered, prefixed id's with hidden meanings that are not clearly connect to what the idref actually links to for the master pages. Imo, xml:id should always be guaranteed unique and there should be a clear code-path between the entity that is linked to from an element and the element itself.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Manual testing and unittests; on Tuesday I will do a practical test at SKF.</pre>
</td>
</tr>
</table>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>
<a href="http://bugs.kde.org/show_bug.cgi?id=288644">288644</a>
</div>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>filters/stage/kpr2odf/Filterkpr2odf.cpp <span style="color: grey">(df7079b)</span></li>
<li>filters/stage/pptx/PptxXmlSlideReader.cpp <span style="color: grey">(eaee384)</span></li>
<li>filters/words/docx/DocxXmlDocumentReader.cpp <span style="color: grey">(6aa31f5)</span></li>
<li>filters/words/oowriter/ExportFilter.h <span style="color: grey">(dea56bd)</span></li>
<li>filters/words/oowriter/ExportFilter.cc <span style="color: grey">(ff44e0c)</span></li>
<li>karbon/common/KarbonDocument.cpp <span style="color: grey">(6057a18)</span></li>
<li>krita/ui/flake/kis_shape_layer.cc <span style="color: grey">(8aaca9d)</span></li>
<li>krita/ui/flake/kis_shape_selection.cpp <span style="color: grey">(95ebeb6)</span></li>
<li>libs/flake/KoConnectionShape.cpp <span style="color: grey">(fda3463)</span></li>
<li>libs/flake/KoImageCollection.cpp <span style="color: grey">(27b8260)</span></li>
<li>libs/flake/KoShape.cpp <span style="color: grey">(be34b8a)</span></li>
<li>libs/flake/KoShapeLoadingContext.h <span style="color: grey">(87b0830)</span></li>
<li>libs/flake/KoShapeLoadingContext.cpp <span style="color: grey">(0573ddf)</span></li>
<li>libs/flake/KoShapeSavingContext.h <span style="color: grey">(c73a680)</span></li>
<li>libs/flake/KoShapeSavingContext.cpp <span style="color: grey">(46cb477)</span></li>
<li>libs/kopageapp/KoPADocument.cpp <span style="color: grey">(49ac34a)</span></li>
<li>libs/kopageapp/KoPAMasterPage.cpp <span style="color: grey">(42e9065)</span></li>
<li>libs/kopageapp/KoPAPage.cpp <span style="color: grey">(fbcf49d)</span></li>
<li>libs/kopageapp/KoPAPastePage.cpp <span style="color: grey">(9fd795e)</span></li>
<li>libs/kopageapp/tests/TestPACopyPastePage.h <span style="color: grey">(363f803)</span></li>
<li>libs/kopageapp/tests/TestPACopyPastePage.cpp <span style="color: grey">(3b023b8)</span></li>
<li>libs/kotext/KoDocumentRdfBase.h <span style="color: grey">(d6f467a)</span></li>
<li>libs/kotext/KoDocumentRdfBase.cpp <span style="color: grey">(7b6b38c)</span></li>
<li>libs/kotext/KoInlineNote.h <span style="color: grey">(91823e9)</span></li>
<li>libs/kotext/KoInlineNote.cpp <span style="color: grey">(897214c)</span></li>
<li>libs/kotext/KoInlineObject.h <span style="color: grey">(8a1d627)</span></li>
<li>libs/kotext/KoTextAnchor.cpp <span style="color: grey">(414b347)</span></li>
<li>libs/kotext/KoTextBlockData.h <span style="color: grey">(cc1528b)</span></li>
<li>libs/kotext/KoTextBlockData.cpp <span style="color: grey">(116b432)</span></li>
<li>libs/kotext/KoTextDrag.cpp <span style="color: grey">(381f4de)</span></li>
<li>libs/kotext/KoTextInlineRdf.h <span style="color: grey">(fd7bb5e)</span></li>
<li>libs/kotext/KoTextInlineRdf.cpp <span style="color: grey">(f449426)</span></li>
<li>libs/kotext/changetracker/KoChangeTracker.h <span style="color: grey">(33c2696)</span></li>
<li>libs/kotext/changetracker/KoChangeTracker.cpp <span style="color: grey">(51b9c5e)</span></li>
<li>libs/kotext/opendocument/KoTextLoader.cpp <span style="color: grey">(3ea7109)</span></li>
<li>libs/kotext/opendocument/KoTextWriter.h <span style="color: grey">(fd0689c)</span></li>
<li>libs/kotext/opendocument/KoTextWriter.cpp <span style="color: grey">(56125d3)</span></li>
<li>libs/kotext/opendocument/KoTextWriter_p.h <span style="color: grey">(c89e895)</span></li>
<li>libs/kotext/opendocument/KoTextWriter_p.cpp <span style="color: grey">(1dbc8bb)</span></li>
<li>libs/kotext/opendocument/tests/CMakeLists.txt <span style="color: grey">(c386cfb)</span></li>
<li>libs/kotext/opendocument/tests/TestChangeTracking.cpp <span style="color: grey">(665636b)</span></li>
<li>libs/main/rdf/KoDocumentRdf.h <span style="color: grey">(fabc628)</span></li>
<li>libs/main/rdf/KoDocumentRdf.cpp <span style="color: grey">(bfaa9ec)</span></li>
<li>libs/odf/CMakeLists.txt <span style="color: grey">(838d4f6)</span></li>
<li>libs/odf/KoElementReference.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>libs/odf/KoElementReference.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>libs/odf/KoEmbeddedDocumentSaver.cpp <span style="color: grey">(36506ca)</span></li>
<li>libs/odf/KoGenChange.cpp <span style="color: grey">(2cd2d97)</span></li>
<li>libs/odf/KoGenChanges.h <span style="color: grey">(d7b51ee)</span></li>
<li>libs/odf/KoGenChanges.cpp <span style="color: grey">(b64d32d)</span></li>
<li>libs/odf/tests/CMakeLists.txt <span style="color: grey">(ee86038)</span></li>
<li>libs/odf/tests/TestKoElementReference.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>libs/odf/tests/TestKoElementReference.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>plan/libs/ui/reports/odt/KoSimpleOdtCheckBox.cpp <span style="color: grey">(79ac92c)</span></li>
<li>plan/libs/ui/reports/odt/KoSimpleOdtLine.cpp <span style="color: grey">(6cddad2)</span></li>
<li>plan/libs/ui/reports/odt/KoSimpleOdtPicture.cpp <span style="color: grey">(20aee62)</span></li>
<li>plan/libs/ui/reports/odt/KoSimpleOdtTextBox.cpp <span style="color: grey">(717b867)</span></li>
<li>stage/part/animations/KPrAnimationBase.cpp <span style="color: grey">(b544485)</span></li>
<li>tables/part/Doc.cpp <span style="color: grey">(25e3fd3)</span></li>
<li>words/part/KWOdfLoader.cpp <span style="color: grey">(af269ab)</span></li>
<li>words/part/KWOdfWriter.cpp <span style="color: grey">(b998485)</span></li>
</ul>
<p><a href="http://git.reviewboard.kde.org/r/104074/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>