<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/111990/">http://git.reviewboard.kde.org/r/111990/</a>
</td>
</tr>
</table>
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">First quick review:</pre>
<br />
<div>
<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/111990/diff/1/?file=177786#file177786line25" style="color: black; font-weight: bold; text-decoration: underline;">braindump/plugins/quickstates/BraindumpQuickStatesPlugin.h</a>
<span style="font-weight: normal;">
(Diff revision 1)
</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">25</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="n">class</span> <span class="n">BraindumpQuickStatesPlugin</span> <span class="o">:</span> <span class="n">public</span> <span class="n"><span class="hl">KParts</span></span><span class="o"><span class="hl">::</span></span><span class="n"><span class="hl">Plugin</span></span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">25</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="n">class</span> <span class="n">BraindumpQuickStatesPlugin</span> <span class="o">:</span> <span class="n">public</span> <span class="n"><span class="hl">QObject</span></span><span class="p"><span class="hl">,</span></span><span class="hl"> </span><span class="n"><span class="hl">public</span></span><span class="hl"> </span><span class="n"><span class="hl">KXMLGUIClient</span></span></pre></td>
</tr>
</tbody>
</table>
<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">What about adding a class CalligraPlugin : public QObject, public XMLGUIClient from which all the existing plugin classes derive instead of KParts::Plugin?
Not that there is any additional method we could add to this intermediate class ATM.
But it would remove the need to always deal with QObject and KXMLGUIClient base classes, like in the plugin declarations and the plugin creation code,
KXMLGUIClient* plugin =
service->createInstance<KParts::Plugin> (this, QVariantList(), &error);
</pre>
</div>
<br />
<div>
<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/111990/diff/1/?file=177787#file177787line38" style="color: black; font-weight: bold; text-decoration: underline;">braindump/plugins/quickstates/BraindumpQuickStatesPlugin.cpp</a>
<span style="font-weight: normal;">
(Diff revision 1)
</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">38</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="n">BraindumpQuickStatesPlugin</span><span class="o">::</span><span class="n">BraindumpQuickStatesPlugin</span><span class="p">(</span><span class="n">QObject</span> <span class="o">*</span><span class="n">parent</span><span class="p">,</span> <span class="k">const</span> <span class="n">QStringList</span> <span class="o">&</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">38</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="n">BraindumpQuickStatesPlugin</span><span class="o">::</span><span class="n">BraindumpQuickStatesPlugin</span><span class="p">(</span><span class="n">QObject</span> <span class="err">*<span class="hl">/</span></span><span class="o"><span class="hl">*</span></span><span class="n">parent</span><span class="err"><span class="hl">*/</span></span><span class="p">,</span> <span class="k">const</span> <span class="n">QStringList</span> <span class="o">&</span><span class="p">)</span></pre></td>
</tr>
</tbody>
</table>
<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">No forward-passing of the parent object to the QObject?
I wonder who is supposed to do memory management of that plugin, if not the parent, which is the View object, as passed in View::loadExtensions() to
service->createInstance<QObject>(this, QVariantList(), &error))?
The insertChildClient(...) call does not result in memory parentship, if that was assumed here.</pre>
</div>
<br />
<div>
<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/111990/diff/1/?file=177796#file177796line59" style="color: black; font-weight: bold; text-decoration: underline;">karbon/plugins/flattenpath/FlattenPathPlugin.cpp</a>
<span style="font-weight: normal;">
(Diff revision 1)
</span>
</th>
</tr>
</thead>
<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">58</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">setXMLFile</span><span class="p">(</span><span class="n">KStandardDirs</span><span class="o">::</span><span class="n">locate</span><span class="p">(</span><span class="s">"data"</span><span class="p">,</span> <span class="s">"karbon/karbonplugins/FlattenPathPlugin.rc"</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span></pre></td>
</tr>
</tbody>
</table>
<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">karbon/karbonplugins -> karbon/plugins or karbon/viewplugins?
karbon/karbonplugins seems redundant</pre>
</div>
<br />
<div>
<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/111990/diff/1/?file=177800#file177800line57" style="color: black; font-weight: bold; text-decoration: underline;">karbon/plugins/refinepath/RefinePathPlugin.cpp</a>
<span style="font-weight: normal;">
(Diff revision 1)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">RefinePathPlugin::RefinePathPlugin(QObject *parent, const QVariantList &) : Plugin(parent)</pre></td>
<td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">55</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="n">RefinePathPlugin</span><span class="o">::</span><span class="n">RefinePathPlugin</span><span class="p">(</span><span class="n">QObject</span> <span class="o">*</span><span class="n">parent</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariantList</span> <span class="o">&</span><span class="p">)</span><span class="hl"> </span><span class="o"><span class="hl">:</span></span><span class="hl"> </span><span class="n"><span class="hl">Plugin</span></span><span class="p"><span class="hl">(</span></span><span class="n"><span class="hl">parent</span></span><span class="p"><span class="hl">)</span></span></pre></td>
<th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">57</font></th>
<td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="n">RefinePathPlugin</span><span class="o">::</span><span class="n">RefinePathPlugin</span><span class="p">(</span><span class="n">QObject</span> <span class="o">*</span><span class="n">parent</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariantList</span> <span class="o">&</span><span class="p">)</span></pre></td>
</tr>
</tbody>
</table>
<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Memory management?</pre>
</div>
<br />
<p>- Friedrich W. H.</p>
<br />
<p>On August 10th, 2013, 1:36 p.m. UTC, Boudewijn Rempt wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.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 Aug. 10, 2013, 1:36 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;">This is a small part of my MVC refactoring branch -- the plugin cleanup. For historical reasons, many of Calligra's plugins were created as kparts, while they are, in fact, only kxmlguiclients, not parts at at all. This patch cleans that up.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>braindump/plugins/quickstates/BraindumpQuickStatesPlugin.h <span style="color: grey">(b9625b0)</span></li>
<li>braindump/plugins/quickstates/BraindumpQuickStatesPlugin.cpp <span style="color: grey">(bc27946)</span></li>
<li>braindump/src/View.cpp <span style="color: grey">(ef19171)</span></li>
<li>devtools/cstester/cstester.cpp <span style="color: grey">(b88619b)</span></li>
<li>extras/okularodpgenerator/OkularOdpGenerator.cpp <span style="color: grey">(94650bf)</span></li>
<li>karbon/data/CMakeLists.txt <span style="color: grey">(6b1e329)</span></li>
<li>karbon/data/karbon_module.desktop <span style="color: grey">(7acc680)</span></li>
<li>karbon/data/karbon_plugin.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>karbon/plugins/flattenpath/CMakeLists.txt <span style="color: grey">(f83620b)</span></li>
<li>karbon/plugins/flattenpath/FlattenPathPlugin.h <span style="color: grey">(622973c)</span></li>
<li>karbon/plugins/flattenpath/FlattenPathPlugin.cpp <span style="color: grey">(d03ccca)</span></li>
<li>karbon/plugins/flattenpath/karbonflattenpath.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>karbon/plugins/refinepath/CMakeLists.txt <span style="color: grey">(caf6aa7)</span></li>
<li>karbon/plugins/refinepath/RefinePathPlugin.h <span style="color: grey">(be16e29)</span></li>
<li>karbon/plugins/refinepath/RefinePathPlugin.cpp <span style="color: grey">(b951adc)</span></li>
<li>karbon/plugins/refinepath/karbonrefinepath.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>karbon/plugins/roundcorners/CMakeLists.txt <span style="color: grey">(82b7159)</span></li>
<li>karbon/plugins/roundcorners/RoundCornersPlugin.h <span style="color: grey">(5cd610a)</span></li>
<li>karbon/plugins/roundcorners/RoundCornersPlugin.cpp <span style="color: grey">(7ac63bf)</span></li>
<li>karbon/plugins/roundcorners/karbonroundcorners.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>karbon/plugins/whirlpinch/CMakeLists.txt <span style="color: grey">(2e920e2)</span></li>
<li>karbon/plugins/whirlpinch/WhirlPinchPlugin.h <span style="color: grey">(51280a1)</span></li>
<li>karbon/plugins/whirlpinch/WhirlPinchPlugin.cpp <span style="color: grey">(94a3527)</span></li>
<li>karbon/plugins/whirlpinch/karbonwhirlpinch.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>karbon/ui/KarbonFactory.cpp <span style="color: grey">(8bbabbe)</span></li>
<li>karbon/ui/KarbonView.cpp <span style="color: grey">(068d39d)</span></li>
<li>karbon/ui/dockers/KarbonLayerDocker.cpp <span style="color: grey">(1cf8395)</span></li>
<li>krita/plugins/extensions/shiva/shivagenerator.h <span style="color: grey">(55894f4)</span></li>
<li>krita/plugins/paintops/libbrush/kis_brush_registry.cpp <span style="color: grey">(f54a619)</span></li>
<li>krita/plugins/paintops/particle/particle_paintop_plugin.h <span style="color: grey">(bd6b245)</span></li>
<li>krita/ui/kis_factory2.h <span style="color: grey">(888b742)</span></li>
<li>krita/ui/kis_factory2.cc <span style="color: grey">(b7896e5)</span></li>
<li>krita/ui/kis_paintop_box.cc <span style="color: grey">(667e6b5)</span></li>
<li>krita/ui/kis_view2.cpp <span style="color: grey">(6af9f4b)</span></li>
<li>krita/ui/kis_view_plugin.h <span style="color: grey">(ff19b2a)</span></li>
<li>krita/ui/kis_view_plugin.cpp <span style="color: grey">(69f5b9d)</span></li>
<li>libs/kokross/KoScriptingPart.h <span style="color: grey">(4f4c933)</span></li>
<li>libs/kokross/KoScriptingPart.cpp <span style="color: grey">(09b8cbb)</span></li>
<li>libs/kopageapp/KoPAView.cpp <span style="color: grey">(bbb068a)</span></li>
<li>libs/main/CMakeLists.txt <span style="color: grey">(9b8503b)</span></li>
<li>libs/main/KoDocument.cpp <span style="color: grey">(1738778)</span></li>
<li>libs/main/KoFactory.h <span style="color: grey">(dc4ada0)</span></li>
<li>libs/main/KoFactory.cpp <span style="color: grey">(c361a11)</span></li>
<li>libs/main/KoMainWindow.cpp <span style="color: grey">(12423a7)</span></li>
<li>libs/main/KoServiceProvider.h <span style="color: grey">(35d603a)</span></li>
<li>libs/main/KoServiceProvider.cpp <span style="color: grey">(f063401)</span></li>
<li>libs/main/KoView.h <span style="color: grey">(10b6403)</span></li>
<li>plan/CMakeLists.txt <span style="color: grey">(4ff06eb)</span></li>
<li>plan/kptmaindocument.cpp <span style="color: grey">(333310c)</span></li>
<li>plan/kptview.cpp <span style="color: grey">(537e047)</span></li>
<li>plan/plan_viewplugin.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>plan/plugins/scripting/CMakeLists.txt <span style="color: grey">(836176d)</span></li>
<li>plan/plugins/scripting/ScriptingPart.cpp <span style="color: grey">(e6d6004)</span></li>
<li>plan/plugins/scripting/planscripting.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>plugins/colorengines/lcms2/LcmsEnginePlugin.h <span style="color: grey">(36a5497)</span></li>
<li>plugins/staging/pivottables/CMakeLists.txt <span style="color: grey">(efb2753)</span></li>
<li>plugins/staging/pivottables/pivotplugin.h <span style="color: grey">(17fc384)</span></li>
<li>plugins/staging/pivottables/pivotplugin.cpp <span style="color: grey">(1bef7d2)</span></li>
<li>plugins/staging/pivottables/sheetspivottables.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>sheets/CMakeLists.txt <span style="color: grey">(e0f4a02)</span></li>
<li>sheets/part/View.cpp <span style="color: grey">(0dc055a)</span></li>
<li>sheets/plugins/scripting/CMakeLists.txt <span style="color: grey">(27e3861)</span></li>
<li>sheets/plugins/scripting/ScriptingPart.h <span style="color: grey">(ac9e614)</span></li>
<li>sheets/plugins/scripting/ScriptingPart.cpp <span style="color: grey">(26431b0)</span></li>
<li>sheets/plugins/scripting/sheetsscripting.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>sheets/plugins/solver/CMakeLists.txt <span style="color: grey">(ad813e6)</span></li>
<li>sheets/plugins/solver/Solver.h <span style="color: grey">(21ee006)</span></li>
<li>sheets/plugins/solver/Solver.cpp <span style="color: grey">(c87639e)</span></li>
<li>sheets/plugins/solver/sheetssolver.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>sheets/sheets_viewplugin.desktop <span style="color: grey">(PRE-CREATION)</span></li>
</ul>
<p><a href="http://git.reviewboard.kde.org/r/111990/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>