<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="https://git.reviewboard.kde.org/r/115097/">https://git.reviewboard.kde.org/r/115097/</a>
     </td>
    </tr>
   </table>
   <br />




<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://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 KDE Frameworks and David Faure.</div>
<div>By Friedrich W. H. Kossebau.</div>










<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kparts
</div>


<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;">As discussed in http://lists.kde.org/?l=kde-frameworks-devel&m=138994749530457&w=2 this patch ensures that all (exported) classes are declared in header files which match the class name. And while includes had to be touched the patch also does some fixup/cleanup of includes, so the headers only include what is needed and have <kparts/part.h> in the installed headers and use "part.h" in the sources.

These headers have been split out as new ones:

>From browserextension.h:
* browserarguments.h
* windowargs.h
* openurlevent.h
* browserhostextension.h
* liveconnectextension.h

>From event.h:
* guiactivateevent.h
* partactivateevent.h
* partselectevent.h

>From part.h:
* openurlarguments.h
* partbase.h
* readonlypart.h
* readwritepart.h

>From htmlextension.h:
* selectorinterface.h
* htmlsettingsinterface.h

listingextension.h has been split up even, as there is no class ListingExtension, into:
* listingfilterextension.h
* listingnotificationextension.h

Matching adaption for KDE4Support: https://git.reviewboard.kde.org/r/115098/


There is one issue:
KDE4 code relies on getting all the now moved-out classes when including browserextension.h, event.h, part.h, htmlextension.h. While for CamelCase-forwarding headers, like <KParts/Part> or <KParts/Event> in KDE4Support this can be catched by just including all the now needed headers, I found no way yet to also have proper backward support for normal includes like <kparts/part.h>. There is lots of code which includes that to use KParts::ReadOnlyPart. Because <kparts/part.h> is now also the correct path for the now-only KParts::Part declaring header from the KParts modul, I could not simply install a kde4-compat part.h from KDE4Support into KDE4Support/kparts/ and then forward include the current headers, because it will fail at least with #include <kparts/part.h>

Would it be acceptable to simply break SC for old code including the lowercase headers (like <kparts/part.h>) and using classes declared in there not matching the filename (like KParts::ReadOnlyPart)?

Or is there a smart workaround for the problem?

One workaround I proposed in the email: The real headers would just have the fallback support directly.
E.g the new part.h would have
// KDE4 compat
#if KDE4COMPATIBLE
#include <kparts/guiactivateevent.h>
#include <kparts/partactivateevent.h>
#include <kparts/partselectevent.h>
#endif
to include the other headers at the places where their classes had been defined before.
This would mean having still KDE4 mentioned in KF5 code :) But KDE4COMPATIBLE (or a better name) should be only defined when KDE4Support is linked as well.

No strong opinion myself. I would opt for the small SC-break :)


Looking at all the stuff build with kdesrc-build/kf5-qt5-build-include there are small adaptions needed for
* khtml
* kross
* kmediaplayer
* kdewebkit
* ktexteditor
* kprintutils
* okteta

Mainly stuff like
-#include <kparts/part.h>
+#include <kparts/readonlypart.h>
Locally all fixed, would commit the adaptions directly to those modules.

</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;">kdesrc-build/kf5-qt5-build-include builds fine for me with all the patches.</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>src/windowargs.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>tests/normalktm.h <span style="color: grey">(f3bc291)</span></li>

 <li>tests/notepad.h <span style="color: grey">(73a6fa2)</span></li>

 <li>tests/parts.h <span style="color: grey">(1207c2c)</span></li>

 <li>tests/parts.cpp <span style="color: grey">(872bdb8)</span></li>

 <li>tests/partviewer.h <span style="color: grey">(bfe3158)</span></li>

 <li>tests/terminal_test.cpp <span style="color: grey">(eda318a)</span></li>

 <li>tests/testmainwindow.h <span style="color: grey">(7ba44e0)</span></li>

 <li>src/browserinterface.cpp <span style="color: grey">(a008e84)</span></li>

 <li>src/browseropenorsavequestion.h <span style="color: grey">(cb8d3ed)</span></li>

 <li>src/browseropenorsavequestion.cpp <span style="color: grey">(dd52608)</span></li>

 <li>src/browserrun.h <span style="color: grey">(5a0b996)</span></li>

 <li>src/browserrun.cpp <span style="color: grey">(bcf50df)</span></li>

 <li>src/browserrun_p.h <span style="color: grey">(fbfbea6)</span></li>

 <li>src/event.h <span style="color: grey">(056d735)</span></li>

 <li>src/event.cpp <span style="color: grey">(1d88c82)</span></li>

 <li>src/fileinfoextension.h <span style="color: grey">(e1efbc1)</span></li>

 <li>src/fileinfoextension.cpp <span style="color: grey">(8ecb234)</span></li>

 <li>src/guiactivateevent.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/guiactivateevent.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/historyprovider.h <span style="color: grey">(f167f30)</span></li>

 <li>src/historyprovider.cpp <span style="color: grey">(1e4733a)</span></li>

 <li>src/htmlextension.h <span style="color: grey">(66966e4)</span></li>

 <li>src/htmlextension.cpp <span style="color: grey">(3a6df16)</span></li>

 <li>src/htmlsettingsinterface.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/htmlsettingsinterface.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/kde_terminal_interface.h <span style="color: grey">(d029e02)</span></li>

 <li>src/listingextension.h <span style="color: grey">(0b2e1dd)</span></li>

 <li>src/listingextension.cpp <span style="color: grey">(d380584)</span></li>

 <li>src/listingfilterextension.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/listingfilterextension.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/listingnotificationextension.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/listingnotificationextension.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/liveconnectextension.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/liveconnectextension.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/mainwindow.h <span style="color: grey">(11d0067)</span></li>

 <li>src/mainwindow.cpp <span style="color: grey">(5c3917e)</span></li>

 <li>src/openurlarguments.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/openurlarguments.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/openurlevent.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/openurlevent.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/part.h <span style="color: grey">(05194d3)</span></li>

 <li>src/part.cpp <span style="color: grey">(5a63777)</span></li>

 <li>src/part_p.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/partactivateevent.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/partactivateevent.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/partbase.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/partbase.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/partbase_p.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/partmanager.h <span style="color: grey">(624a97c)</span></li>

 <li>src/partmanager.cpp <span style="color: grey">(7c1f3b0)</span></li>

 <li>src/partselectevent.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/partselectevent.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/plugin.h <span style="color: grey">(b7d130f)</span></li>

 <li>src/plugin.cpp <span style="color: grey">(344f75b)</span></li>

 <li>src/readonlypart.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/readonlypart.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/readonlypart_p.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/readwritepart.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/readwritepart.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/readwritepart_p.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/scriptableextension.h <span style="color: grey">(9cec71f)</span></li>

 <li>src/scriptableextension.cpp <span style="color: grey">(d31a558)</span></li>

 <li>src/scriptableextension_p.h <span style="color: grey">(82808f7)</span></li>

 <li>src/selectorinterface.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/selectorinterface.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statusbarextension.h <span style="color: grey">(c46fd55)</span></li>

 <li>src/statusbarextension.cpp <span style="color: grey">(2d8de8a)</span></li>

 <li>src/textextension.h <span style="color: grey">(f8c77e4)</span></li>

 <li>src/textextension.cpp <span style="color: grey">(3dc5a99)</span></li>

 <li>src/windowargs.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>autotests/parttest.cpp <span style="color: grey">(7505948)</span></li>

 <li>src/CMakeLists.txt <span style="color: grey">(d987f46)</span></li>

 <li>src/browserarguments.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/browserarguments.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/browserextension.h <span style="color: grey">(998f7ac)</span></li>

 <li>src/browserextension.cpp <span style="color: grey">(a367de9)</span></li>

 <li>src/browserhostextension.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/browserhostextension.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/browserinterface.h <span style="color: grey">(cf10499)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/115097/diff/" style="margin-left: 3em;">View Diff</a></p>







  </td>
 </tr>
</table>




  </div>
 </body>
</html>