<table><tr><td style="">hein created this revision.<br />hein added a reviewer: mart.<br />Restricted Application added a project: KWin.<br />hein requested review of this revision.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D14542">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>This is a basic proof of concept KCM using Marco's DBus API from<br />
<a href="https://phabricator.kde.org/D13887" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">D13887</a>, as he requested as a form of review.</p>

<p>The KCM currently installs alongside the old one with no<br />
file conflicts.</p>

<p>The UI is based on ScrollViewKCM. I'll attach a screenshot<br />
seperately. It's OK-ish, I guess, although only the "Rows"<br />
spinbox correctly manages the "Apply" button; adding, removing<br />
and renaming desktops results in direct calls to the compositor.<br />
Renaming is done with an inline text field on the row delegate.</p>

<p>More importantly, here's the problems I found:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">The <tt style="background: #ebebeb; font-size: 13px;">desktopCreated</tt> signal doesn't have an index parameter, which means I had to resort to appending new desktops I'm told about through the protocol, even though <tt style="background: #ebebeb; font-size: 13px;">createDesktop</tt> takes a <tt style="background: #ebebeb; font-size: 13px;">position</tt> parameter. The struct has an x11DesktopNumber, but I don't want to use that.</li>
<li class="remarkup-list-item">The <tt style="background: #ebebeb; font-size: 13px;">position</tt> parameter in <tt style="background: #ebebeb; font-size: 13px;">createDesktop</tt> seems to be handled incorrectly on the KWin side. I expected it to be zero-indexed, but I have to add one to append a new desktop.</li>
<li class="remarkup-list-item">To do the custom type demarshalling for the structs and vector of structs I copied the type definitions and the functions for now, but it would be good to put this stuff into a shared header considering it's the same repo.</li>
<li class="remarkup-list-item">The KCM for some reason catches Return presses and closes when anything in the Qt Quick view has focus. To do the inline editing using a TextField in the delegate, I had to implement <tt style="background: #ebebeb; font-size: 13px;">Keys.on(Return|Enter)Pressed</tt> instead of using <tt style="background: #ebebeb; font-size: 13px;">onAccepted</tt>.</li>
<li class="remarkup-list-item">A small spacing conundrum with the RowLayout in the footer I was too lazy to work out for now since this is a WIP UI anyway.</li>
</ul></div></div><br /><div><strong>REPOSITORY</strong><div><div>R108 KWin</div></div></div><br /><div><strong>BRANCH</strong><div><div>mart/plasmavirtualdesktop</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D14542">https://phabricator.kde.org/D14542</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>kcmkwin/CMakeLists.txt<br />
kcmkwin/kwindesktopng/CMakeLists.txt<br />
kcmkwin/kwindesktopng/Messages.sh<br />
kcmkwin/kwindesktopng/desktopsmodel.cpp<br />
kcmkwin/kwindesktopng/desktopsmodel.h<br />
kcmkwin/kwindesktopng/kcm_kwin_virtualdesktops.desktop<br />
kcmkwin/kwindesktopng/org.kde.kwin.virtualdesktopmanager.xml<br />
kcmkwin/kwindesktopng/package/contents/ui/main.qml<br />
kcmkwin/kwindesktopng/package/metadata.desktop<br />
kcmkwin/kwindesktopng/virtualdesktops.cpp<br />
kcmkwin/kwindesktopng/virtualdesktops.h</div></div></div><br /><div><strong>To: </strong>hein, mart<br /><strong>Cc: </strong>plasma-devel, kwin, mkulinski, ragreen, jackyalcine, Pitel, iodelay, bwowk, ZrenBot, lesliezhai, ali-mohamed, hardening, jensreuterberg, abetts, sebas, apol, mart<br /></div>