<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/121856/">https://git.reviewboard.kde.org/r/121856/</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;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Thinking again about it I think methods such as "activeWindow" and "icon" definitely should be exposed in this import. This would be super handy for the window controls widget (you know, that netbook thing in your panel that shows the window title and offers close/maximize buttons). It would still need a plugin for invoking present windows and closing the window but the rest could be done without code duplication:</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">QWindow *KWindowSystemProxy::activeWindow() {
    return QWindow::fromWinId(KWindowSystem::activeWindow());
}
If I understood it correctly, Qt will generate a QWindow representation of that window (with title and everything set). Since that QWindow instance won't have a parent (I guess) it will be adpoted by the QML engine and thrown away when it goes out of scope (eg. you call var activewin = kwindowsystem.activeWindow(); console.log(activewin.title); and when that function ends it get collected by the GC)</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">So that shouldn't be too bad of an approach, no? Not sure about QList<QWindow *> though</p></pre>
 <br />









<p>- Kai Uwe Broulik</p>


<br />
<p>On Januar 5th, 2015, 10:49 vorm. UTC, Kai Uwe Broulik wrote:</p>









<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 kwin and Plasma.</div>
<div>By Kai Uwe Broulik.</div>


<p style="color: grey;"><i>Updated Jan. 5, 2015, 10:49 vorm.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kdeclarative
</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;">This is a thin proxy around KWindowSystem exposing most of its methods to qml via KWindowSystem item in an org.kde.kwindowsystem import.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">It uses QWindow instead of WId parameters so you can just pass a qml Item, such as a Plasma Dialog as parameter for ease of use (and so you cannot mess with others windows without effort, also I don't know what "WId" would translate to anyway). It omits all those methods that return WId/QWindow as I don't know how expensive QWindow::fromWinId is or who takes ownership of it. We need to decide which methods make sense in this import.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Methods that have signals and don't take parameters are turned into full-fledged properties (like currentDesktop, numberOfDesktops, etc) and the rest stays Q_INVOKABLE.</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;">The properties work and change accordingly (compositing active signal doesn't seem to be emitted by KWindowSystem in the first place, at least Ctrl+Shift+F12 doesn't make it change), the forceActivateWindow method works for Review 121807</p></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/qmlcontrols/kwindowsystemplugin/qmldir <span style="color: grey">(PRE-CREATION)</span></li>

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

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

 <li>src/qmlcontrols/kwindowsystemplugin/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

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

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

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

</ul>

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






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








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