hein created this revision.
hein added a reviewer: mart.
Restricted Application added a project: KWin.
hein requested review of this revision.

REVISION SUMMARY
  This is a basic proof of concept KCM using Marco's DBus API from
  D13887 <https://phabricator.kde.org/D13887>, as he requested as a form of 
review.
  
  The KCM currently installs alongside the old one with no
  file conflicts.
  
  The UI is based on ScrollViewKCM. I'll attach a screenshot
  seperately. It's OK-ish, I guess, although only the "Rows"
  spinbox correctly manages the "Apply" button; adding, removing
  and renaming desktops results in direct calls to the compositor.
  Renaming is done with an inline text field on the row delegate.
  
  More importantly, here's the problems I found:
  
  - The `desktopCreated` 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 `createDesktop` takes a `position` parameter. The struct has an 
x11DesktopNumber, but I don't want to use that.
  - The `position` parameter in `createDesktop` 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.
  - 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.
  - 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 `Keys.on(Return|Enter)Pressed` instead of using 
`onAccepted`.
  - 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.

REPOSITORY
  R108 KWin

BRANCH
  mart/plasmavirtualdesktop

REVISION DETAIL
  https://phabricator.kde.org/D14542

AFFECTED FILES
  kcmkwin/CMakeLists.txt
  kcmkwin/kwindesktopng/CMakeLists.txt
  kcmkwin/kwindesktopng/Messages.sh
  kcmkwin/kwindesktopng/desktopsmodel.cpp
  kcmkwin/kwindesktopng/desktopsmodel.h
  kcmkwin/kwindesktopng/kcm_kwin_virtualdesktops.desktop
  kcmkwin/kwindesktopng/org.kde.kwin.virtualdesktopmanager.xml
  kcmkwin/kwindesktopng/package/contents/ui/main.qml
  kcmkwin/kwindesktopng/package/metadata.desktop
  kcmkwin/kwindesktopng/virtualdesktops.cpp
  kcmkwin/kwindesktopng/virtualdesktops.h

To: hein, mart
Cc: plasma-devel, kwin, mkulinski, ragreen, jackyalcine, Pitel, iodelay, bwowk, 
ZrenBot, lesliezhai, ali-mohamed, hardening, jensreuterberg, abetts, sebas, 
apol, mart

Reply via email to