<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/126291/">https://git.reviewboard.kde.org/r/126291/</a>
     </td>
    </tr>
   </table>
   <br />




<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
 <tr>
  <td>

<div>Review request for KDE Software on Mac OS X and KDE Frameworks.</div>
<div>By RenĂ© J.V. Bertin.</div>


<p style="color: grey;"><i>Updated March 4, 2016, 8:19 p.m.</i></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Changes</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 revision has a more complete (as complete as possible?) internal WId registry feature. WIds on OS X are tricky in that they do not usually correspond to `NSWindow` instances but instead to an `NSView` instance. As such there is no guarantee to receive any kind of notification when the NSView is created, which (I think) means that one has to take stock of an application's windows and views at certain times like during appropriate calls to KWindowSystem.

With these latest modifications, the `kwindowsystem_threadtest` autotest completes successfully, but only when doing an explicit action after `m_widget->show()` that causes the widget to be displayed (basically, the equivalent of a call to `XSync()`).</pre>
  </td>
 </tr>
</table>







<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kwindowsystem
</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;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">KWindowSystem has been lacking a platform plugin for OS X. This RR presents a "backport" of the modified KDE4 KWindowSystem implementation that has been used in the MacPorts kdelibs4 port for the last 2 or 3 (or more) years.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I have made some initial steps to remove deprecated Carbon API calls, but this is clearly a work in progress.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Open questions include
- is there any justification to run an event handler (or Cocoa observer) to keep track of running applications, possibly even listing all their open windows?
- is there any use for the Qt event listener framework (cf. the NETEventFilter in the X11 plugin)? I haven't yet had time to try to figure out what this "could be good for", and am very open to suggestions in this departments.
- one application for such an event filter would be a listener that catches the opening and closing of all windows by the running process, and keeps track of their <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">WId</code>s. A new method could then be added (to <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">KWindowInfo</code>?) to distinguish <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">WId</code>s created by the running application from "foreign" ones (useful also on Wayland and MS Windows).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;"><code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">KWindowSystem::setMainWindow</code> should become a front for payload provided by the plugins. I'll leave that to the regular/official maintainer(s) of this framework.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This code could probably do with <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">lots</em> of comments; I'll try to add them as questions about this or that bit of code arise.</p></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;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">On OS X 10.9.5 with Qt 5.5.1 and frameworks 5.16.0 .</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> (updated)</h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>autotests/CMakeLists.txt <span style="color: grey">(65ed8d4)</span></li>

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

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

 <li>src/debug_p.cpp <span style="color: grey">(72abfb7)</span></li>

 <li>src/kwindowsystem.cpp <span style="color: grey">(407a67d)</span></li>

 <li>src/platforms/osx/CMakeLists.txt <span style="color: grey">(4fc3347)</span></li>

 <li>src/platforms/osx/cocoa.json <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/platforms/osx/kkeyserver.cpp <span style="color: grey">(3ddb921)</span></li>

 <li>src/platforms/osx/kwindowinfo.cpp <span style="color: grey">(e8555bb)</span></li>

 <li>src/platforms/osx/kwindowinfo.mm <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/platforms/osx/kwindowinfo_mac_p.h <span style="color: grey">(c8f307e)</span></li>

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

 <li>src/platforms/osx/kwindowsystem.cpp <span style="color: grey">(1758829)</span></li>

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

 <li>src/platforms/osx/kwindowsystem_macobjc.mm <span style="color: grey">(PRE-CREATION)</span></li>

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

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

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

</ul>

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






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



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