[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kwin
Subject:    Re: Review Request: Add appmenu support to kwin
From:       "Lamarque Vieira Souza" <lamarque () kde ! org>
Date:       2012-07-28 16:41:55
Message-ID: 20120728164155.17725.70348 () vidsolbach ! de
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


> On April 27, 2012, 7:02 p.m., Lamarque Vieira Souza wrote:
> > appmenu/lib/importer_interface.h, line 46
> > <http://git.reviewboard.kde.org/r/104344/diff/9/?file=56728#file56728line46>
> > 
> > QDBusReply and waitForFinished are no go from my part. Please use them only when \
> > really really necessary.
> 
> Bellegarde Cédric wrote:
> I thinks it's needed but i'm rewriting all the code to bypass canonical copyright \
> (and make it more flexible)... 
> By the way, in krunner-appmenu, i can see reply.waitForFinished(), will talk with \
> A.Fiestas about this issue. 
> Thomas Lübking wrote:
> krunner is not the compositor - if it blocks for n seconds, that's a minor and \
> local issue - if kwin blocks for n seconds, that's a major issue. Therefore \
> blocking dbus calls (where the other side may hang) are no option here. 
> Martin Gräßlin wrote:
> krunner is also a highly threaded application. So if it's inside a runner, it's \
> just the runner which is blocked. Nevertheless I would love to see only \
> non-blocking D-Bus calls in KDE codebase :-) 
> Bellegarde Cédric wrote:
> I'm sure dbusmenu will not work without a blocking dbus call... (but i may be \
> wrong)... 
> I'm thinking about another solution, move menu drawing code to kded:
> - Kwin tell kded-appmenu: "Show menu/menubar at position
> - Kded popup menu and dbus blocking call should not be a problem
> 
> What about this solution ?
> 
> Lamarque Vieira Souza wrote:
> Thomas Lübking, kded already has problems with stalls from time to time. Most of \
> the time they do not cause much problems, but sometimes (specially when a plasmoid \
> tries to talk to kded) the stalls can propagate to the entire desktop. In \
> AppMenuModule::slotLayoutUpdated in this patch there is a synchronous dbus call \
> with a 3s timeout. That means that eventually that slot can stall kded for up to 3s \
> everytime there is an update in the mentioned layout. 
> Martin Gräßlin, as long as there is no synchronization mechanism (like a QMutex) \
> between the threads then you are right. 
> Thomas Lübking wrote:
> @Lamarque
> That is why you should avoid any sync dbus calls (or sub processes) in a GUI \
> thread, esp. if it has further impact (as plasmoids have on the entire desktop in \
> the present design) or move them to another thread or nested event loop. Also i \
> don't see me talking about using sync dbus calls in kded ;-) 
> > that eventually that slot can stall kded for up to 3s everytime there is an \
> > update in the mentioned layout
> I've no idea, but would expect kded modules to be threaded??
> 
> @Bellegarde
> imo in general a reasonable suggestion since kwin would remain being a window \
> manager and not suddenly become a menubar server. The  entire thing would then \
> become sth. between the decoration (calling a "random" dbus interface for a button) \
> and kded, kwin doesn't need further modifications. Nevertheless see Lamarques \
> comment. 
> Howerver:
> > I'm sure dbusmenu will not work without a blocking dbus call
> I hope that's not true and from the present issue i would not understand why at \
> all. However in that case i suggest to review and dump the protocol for sth. \
> better. Can you elaborate on why you assume sync dbus calls are mandatory for \
> dbusmenu? (or do you just mean the dbusmenu-qt implementation just uses them \
> without sense, in which case that should be fixed) 
> Lamarque Vieira Souza wrote:
> > I've no idea, but would expect kded modules to be threaded??
> well, I guess most kded modules are not threaded and the one in this patch also \
> does not seem threaded. I think most developers that implement a kded do not even \
> think about using threads, so we need to warn them from time to time. Thanks for \
> suggesting using threads here :-) 
> > Can you elaborate on why you assume sync dbus calls are mandatory for dbusmenu?
> The sync dbus call spotted here came from an automatic generated header using \
> qdbusxml2cpp, so we cannot change it unless we change the dbusmenu specification. 
> Thomas Lübking wrote:
> > I guess most kded modules are not threaded
> I expected *kded* to run modules in threads (if you run 3rd party stuff of \
> uncertain quality, thats rather mandatory) 
> > The sync dbus call spotted here came from an automatic generated header using \
> > qdbusxml2cpp
> yesno - you're aware of "QDBusPendingCall QDBusAbstractInterface::asyncCall(.)"?
> Check QDebugPendingReply doc for details on invocation.
> 
> Unless the protocol is actually stupid enough to require a synchronous operation \
> (ie. if the client does sth. async and uses that the server may invalidate or crash \
> or similar or vv.) there's no need to perform sync dbus operations - and one should \
> not, regardless of the application, but esp. not in any GUI thread.

> I expected *kded* to run modules in threads (if you run 3rd party stuff of \
> uncertain quality, thats rather mandatory)
Ah, ok then. Now you know kded is not threaded :-/

I am aware of QDBusAbstractInterface::asyncCall() but programs may not work properly \
if the other end of the dbus call is not prepared to handle async calls, right? \
Anyway, there is an async version of this call some lines above, so as long as nobody \
uses this sync version it should be ok.


- Lamarque Vieira


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/104344/#review13002
-----------------------------------------------------------


On April 16, 2012, 1:55 p.m., Bellegarde Cédric wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/104344/
> -----------------------------------------------------------
> 
> (Updated April 16, 2012, 1:55 p.m.)
> 
> 
> Review request for kwin.
> 
> 
> Description
> -------
> 
> Here a patch to add appmenu support to kwin:
> - via a menu button in titlebar
> - via a global shortcut
> 
> Works by Lionel Chauvin and me, original review request: \
> https://git.reviewboard.kde.org/r/101162/ 
> It depends on:
> http://quickgit.kde.org/index.php?p=kded-appmenu.git
> 
> Kubuntu and ArchLinux packages (KDE 4.8.1 backport) availables here:
> http://kde-look.org/content/show.php/kde-workspace-appmenu?content=148583
> 
> It looks like this:
> http://www.youtube.com/watch?v=j0o1sRLRc60&hd=1
> 
> I remove ( http://kde-look.org/CONTENT/content-pre1/141254-1.png ) this way to show \
>                 menu button because:
> - It conflicts with window menu button
> - Using application name is impossible (we only have window class and sometime it's \
>                 quite ugly)
> - Using just "Menu" really looks bad
> 
> 
> Diffs
> -----
> 
> CMakeLists.txt 1385cb6 
> appmenu/CMakeLists.txt PRE-CREATION 
> appmenu/lib/CMakeLists.txt PRE-CREATION 
> appmenu/lib/com.canonical.AppMenu.Registrar.xml PRE-CREATION 
> appmenu/lib/importer_interface.h PRE-CREATION 
> appmenu/lib/importer_interface.cpp PRE-CREATION 
> appmenu/lib/kappmenu_export.h PRE-CREATION 
> appmenu/lib/kappmenuimporter.h PRE-CREATION 
> appmenu/lib/kappmenuimporter.cpp PRE-CREATION 
> appmenu/lib/menuinfo.h PRE-CREATION 
> appmenu/module/CMakeLists.txt PRE-CREATION 
> appmenu/module/appmenu.h PRE-CREATION 
> appmenu/module/appmenu.cpp PRE-CREATION 
> appmenu/module/appmenu.desktop PRE-CREATION 
> appmenu/module/com.canonical.AppMenu.Registrar.xml PRE-CREATION 
> appmenu/module/registrar.h PRE-CREATION 
> appmenu/module/registrar.cpp PRE-CREATION 
> kwin/CMakeLists.txt 6e29be2 
> kwin/bridge.h 64108e5 
> kwin/bridge.cpp 897d432 
> kwin/client.h 2f55087 
> kwin/client.cpp 410ff43 
> kwin/clients/oxygen/oxygenbutton.h ea11717 
> kwin/clients/oxygen/oxygenbutton.cpp 28aa8b1 
> kwin/clients/oxygen/oxygenclient.h e1d1d0a 
> kwin/clients/oxygen/oxygenclient.cpp 7a2b021 
> kwin/clients/oxygen/oxygenfactory.h b38b097 
> kwin/clients/oxygen/oxygenfactory.cpp 827aa59 
> kwin/config-kwin.h.cmake 49b643a 
> kwin/kcmkwin/kwindecoration/CMakeLists.txt 4762bb9 
> kwin/kcmkwin/kwindecoration/buttons.cpp 2d12244 
> kwin/kcmkwin/kwindecoration/preview.h 20ee869 
> kwin/kcmkwin/kwindecoration/preview.cpp fe802c7 
> kwin/kcmkwin/kwinoptions/windows.h 3fadf2c 
> kwin/kcmkwin/kwinoptions/windows.cpp a7c0f4f 
> kwin/kwin.kcfg cf6537e 
> kwin/kwinbindings.cpp 3284cf0 
> kwin/libkdecorations/kcommondecoration.h 3fe9fcf 
> kwin/libkdecorations/kcommondecoration.cpp 13a4c49 
> kwin/libkdecorations/kdecoration.h 442d0a1 
> kwin/libkdecorations/kdecoration.cpp 71f4f8d 
> kwin/libkdecorations/kdecorationbridge.h b7d0619 
> kwin/menubar.h PRE-CREATION 
> kwin/menubar.cpp PRE-CREATION 
> kwin/options.h 855ed78 
> kwin/options.cpp a250e79 
> kwin/scripting/workspace_wrapper.h 76d60bf 
> kwin/scripting/workspace_wrapper.cpp c5b684a 
> kwin/useractions.cpp 09e18c3 
> kwin/workspace.h 9df435c 
> kwin/workspace.cpp b5c8014 
> 
> Diff: http://git.reviewboard.kde.org/r/104344/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Bellegarde Cédric
> 
> 


[Attachment #5 (text/html)]

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








<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: \
10px;">  <p style="margin-top: 0;">On April 27th, 2012, 7:02 p.m., <b>Lamarque Vieira \
Souza</b> wrote:</p>  <blockquote style="margin-left: 1em; border-left: 2px solid \
#d0d0d0; padding-left: 10px;">  



<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; \
border-collapse: collapse; margin: 2px padding: 2px;">  <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; \
font-size: 9pt; padding: 4px 8px; text-align: left;">  <a \
href="http://git.reviewboard.kde.org/r/104344/diff/9/?file=56728#file56728line46" \
style="color: black; font-weight: bold; text-decoration: \
underline;">appmenu/lib/importer_interface.h</a>  <span style="font-weight: normal;">

     (Diff revision 9)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; \
"></pre></td>  <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: \
0; ">public Q_SLOTS: // METHODS</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" \
align="right"><font size="2"></font></th>  <td bgcolor="#c5ffc4" width="50%"><pre \
style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>  <th \
bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid \
#C0C0C0;" align="right"><font size="2">46</font></th>  <td bgcolor="#c5ffc4" \
width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span \
class="kr">inline</span> <span class="n">QDBusReply</span><span \
class="o">&lt;</span><span class="n">QString</span><span class="o">&gt;</span> <span \
class="n">GetMenuForWindow</span><span class="p">(</span><span class="n">uint</span> \
<span class="n">windowId</span><span class="p">,</span> <span \
class="n">QDBusObjectPath</span> <span class="o">&amp;</span><span \
class="n">menuObjectPath</span><span class="p">)</span></pre></td>  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: \
-pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">QDBusReply and \
waitForFinished are no go from my part. Please use them only when really really \
necessary.</pre>  </blockquote>



 <p>On July 22nd, 2012, 6:08 p.m., <b>Bellegarde Cédric</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: \
10px;">  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: \
-pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I thinks it&#39;s needed \
but i&#39;m rewriting all the code to bypass canonical copyright (and make it more \
flexible)...

By the way, in krunner-appmenu, i can see reply.waitForFinished(), will talk with \
A.Fiestas about this issue.</pre>  </blockquote>





 <p>On July 22nd, 2012, 6:17 p.m., <b>Thomas Lübking</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: \
10px;">  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: \
-pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">krunner is not the \
compositor - if it blocks for n seconds, that&#39;s a minor and local issue - if kwin \
blocks for n seconds, that&#39;s a major issue. Therefore blocking dbus calls (where \
the other side may hang) are no option here.</pre>  </blockquote>





 <p>On July 22nd, 2012, 8 p.m., <b>Martin Gräßlin</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: \
10px;">  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: \
-pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">krunner is also a highly \
threaded application. So if it&#39;s inside a runner, it&#39;s just the runner which \
is blocked. Nevertheless I would love to see only non-blocking D-Bus calls in KDE \
codebase :-)</pre>  </blockquote>





 <p>On July 26th, 2012, 9:06 p.m., <b>Bellegarde Cédric</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: \
10px;">  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: \
-pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I&#39;m sure dbusmenu \
will not work without a blocking dbus call... (but i may be wrong)...

I&#39;m thinking about another solution, move menu drawing code to kded:
- Kwin tell kded-appmenu: &quot;Show menu/menubar at position
- Kded popup menu and dbus blocking call should not be a problem

What about this solution ?</pre>
 </blockquote>





 <p>On July 28th, 2012, 1:23 a.m., <b>Lamarque Vieira Souza</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: \
10px;">  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: \
-pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Thomas Lübking, kded \
already has problems with stalls from time to time. Most of the time they do not \
cause much problems, but sometimes (specially when a plasmoid tries to talk to kded) \
the stalls can propagate to the entire desktop. In AppMenuModule::slotLayoutUpdated \
in this patch there is a synchronous dbus call with a 3s timeout. That means that \
eventually that slot can stall kded for up to 3s everytime there is an update in the \
mentioned layout.

Martin Gräßlin, as long as there is no synchronization mechanism (like a QMutex) \
between the threads then you are right.</pre>  </blockquote>





 <p>On July 28th, 2012, 7:12 a.m., <b>Thomas Lübking</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: \
10px;">  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: \
-pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">@Lamarque That is why \
you should avoid any sync dbus calls (or sub processes) in a GUI thread, esp. if it \
has further impact (as plasmoids have on the entire desktop in the present design) or \
move them to another thread or nested event loop. Also i don&#39;t see me talking \
about using sync dbus calls in kded ;-)

&gt; that eventually that slot can stall kded for up to 3s everytime there is an \
update in the mentioned layout I&#39;ve no idea, but would expect kded modules to be \
threaded??

@Bellegarde
imo in general a reasonable suggestion since kwin would remain being a window manager \
and not suddenly become a menubar server. The  entire thing would then become sth. \
between the decoration (calling a &quot;random&quot; dbus interface for a button) and \
kded, kwin doesn&#39;t need further modifications. Nevertheless see Lamarques \
comment.

Howerver:
&gt; I&#39;m sure dbusmenu will not work without a blocking dbus call
I hope that&#39;s not true and from the present issue i would not understand why at \
all. However in that case i suggest to review and dump the protocol for sth. better. \
Can you elaborate on why you assume sync dbus calls are mandatory for dbusmenu? (or \
do you just mean the dbusmenu-qt implementation just uses them without sense, in \
which case that should be fixed)</pre>  </blockquote>





 <p>On July 28th, 2012, 3:56 p.m., <b>Lamarque Vieira Souza</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: \
10px;">  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: \
-pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">&gt;I&#39;ve no idea, \
but would expect kded modules to be threaded?? well, I guess most kded modules are \
not threaded and the one in this patch also does not seem threaded. I think most \
developers that implement a kded do not even think about using threads, so we need to \
warn them from time to time. Thanks for suggesting using threads here :-)

&gt;Can you elaborate on why you assume sync dbus calls are mandatory for dbusmenu?
The sync dbus call spotted here came from an automatic generated header using \
qdbusxml2cpp, so we cannot change it unless we change the dbusmenu \
specification.</pre>  </blockquote>





 <p>On July 28th, 2012, 4:17 p.m., <b>Thomas Lübking</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: \
10px;">  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: \
-pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">&gt; I guess most kded \
modules are not threaded I expected *kded* to run modules in threads (if you run 3rd \
party stuff of uncertain quality, thats rather mandatory)

&gt; The sync dbus call spotted here came from an automatic generated header using \
qdbusxml2cpp yesno - you&#39;re aware of &quot;QDBusPendingCall \
QDBusAbstractInterface::asyncCall(.)&quot;? Check QDebugPendingReply doc for details \
on invocation.

Unless the protocol is actually stupid enough to require a synchronous operation (ie. \
if the client does sth. async and uses that the server may invalidate or crash or \
similar or vv.) there&#39;s no need to perform sync dbus operations - and one should \
not, regardless of the application, but esp. not in any GUI thread.</pre>  \
</blockquote>







</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; \
white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">&gt;I \
expected *kded* to run modules in threads (if you run 3rd party stuff of uncertain \
quality, thats rather mandatory) Ah, ok then. Now you know kded is not threaded :-/

I am aware of QDBusAbstractInterface::asyncCall() but programs may not work properly \
if the other end of the dbus call is not prepared to handle async calls, right? \
Anyway, there is an async version of this call some lines above, so as long as nobody \
uses this sync version it should be ok.</pre> <br />




<p>- Lamarque Vieira</p>


<br />
<p>On April 16th, 2012, 1:55 p.m., Bellegarde Cédric wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" \
style="background-image: \
url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); \
background-position: left top; background-repeat: repeat-x; border: 1px black \
solid;">  <tr>
  <td>

<div>Review request for kwin.</div>
<div>By Bellegarde Cédric.</div>


<p style="color: grey;"><i>Updated April 16, 2012, 1:55 p.m.</i></p>






<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;">Here a patch to add appmenu support to kwin:
- via a menu button in titlebar
- via a global shortcut

Works by Lionel Chauvin and me, original review request: \
https://git.reviewboard.kde.org/r/101162/

It depends on:
http://quickgit.kde.org/index.php?p=kded-appmenu.git

Kubuntu and ArchLinux packages (KDE 4.8.1 backport) availables here:
http://kde-look.org/content/show.php/kde-workspace-appmenu?content=148583

It looks like this:
http://www.youtube.com/watch?v=j0o1sRLRc60&amp;hd=1

I remove ( http://kde-look.org/CONTENT/content-pre1/141254-1.png ) this way to show \
                menu button because:
- It conflicts with window menu button
- Using application name is impossible (we only have window class and sometime \
                it&#39;s quite ugly)
- Using just &quot;Menu&quot; really looks bad</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>CMakeLists.txt <span style="color: grey">(1385cb6)</span></li>

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

 <li>appmenu/lib/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>appmenu/lib/com.canonical.AppMenu.Registrar.xml <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>appmenu/lib/importer_interface.h <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>appmenu/lib/importer_interface.cpp <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>appmenu/lib/kappmenu_export.h <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>appmenu/lib/kappmenuimporter.h <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>appmenu/lib/kappmenuimporter.cpp <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>appmenu/lib/menuinfo.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>appmenu/module/CMakeLists.txt <span style="color: \
grey">(PRE-CREATION)</span></li>

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

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

 <li>appmenu/module/appmenu.desktop <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>appmenu/module/com.canonical.AppMenu.Registrar.xml <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>appmenu/module/registrar.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>appmenu/module/registrar.cpp <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>kwin/CMakeLists.txt <span style="color: grey">(6e29be2)</span></li>

 <li>kwin/bridge.h <span style="color: grey">(64108e5)</span></li>

 <li>kwin/bridge.cpp <span style="color: grey">(897d432)</span></li>

 <li>kwin/client.h <span style="color: grey">(2f55087)</span></li>

 <li>kwin/client.cpp <span style="color: grey">(410ff43)</span></li>

 <li>kwin/clients/oxygen/oxygenbutton.h <span style="color: \
grey">(ea11717)</span></li>

 <li>kwin/clients/oxygen/oxygenbutton.cpp <span style="color: \
grey">(28aa8b1)</span></li>

 <li>kwin/clients/oxygen/oxygenclient.h <span style="color: \
grey">(e1d1d0a)</span></li>

 <li>kwin/clients/oxygen/oxygenclient.cpp <span style="color: \
grey">(7a2b021)</span></li>

 <li>kwin/clients/oxygen/oxygenfactory.h <span style="color: \
grey">(b38b097)</span></li>

 <li>kwin/clients/oxygen/oxygenfactory.cpp <span style="color: \
grey">(827aa59)</span></li>

 <li>kwin/config-kwin.h.cmake <span style="color: grey">(49b643a)</span></li>

 <li>kwin/kcmkwin/kwindecoration/CMakeLists.txt <span style="color: \
grey">(4762bb9)</span></li>

 <li>kwin/kcmkwin/kwindecoration/buttons.cpp <span style="color: \
grey">(2d12244)</span></li>

 <li>kwin/kcmkwin/kwindecoration/preview.h <span style="color: \
grey">(20ee869)</span></li>

 <li>kwin/kcmkwin/kwindecoration/preview.cpp <span style="color: \
grey">(fe802c7)</span></li>

 <li>kwin/kcmkwin/kwinoptions/windows.h <span style="color: \
grey">(3fadf2c)</span></li>

 <li>kwin/kcmkwin/kwinoptions/windows.cpp <span style="color: \
grey">(a7c0f4f)</span></li>

 <li>kwin/kwin.kcfg <span style="color: grey">(cf6537e)</span></li>

 <li>kwin/kwinbindings.cpp <span style="color: grey">(3284cf0)</span></li>

 <li>kwin/libkdecorations/kcommondecoration.h <span style="color: \
grey">(3fe9fcf)</span></li>

 <li>kwin/libkdecorations/kcommondecoration.cpp <span style="color: \
grey">(13a4c49)</span></li>

 <li>kwin/libkdecorations/kdecoration.h <span style="color: \
grey">(442d0a1)</span></li>

 <li>kwin/libkdecorations/kdecoration.cpp <span style="color: \
grey">(71f4f8d)</span></li>

 <li>kwin/libkdecorations/kdecorationbridge.h <span style="color: \
grey">(b7d0619)</span></li>

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

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

 <li>kwin/options.h <span style="color: grey">(855ed78)</span></li>

 <li>kwin/options.cpp <span style="color: grey">(a250e79)</span></li>

 <li>kwin/scripting/workspace_wrapper.h <span style="color: \
grey">(76d60bf)</span></li>

 <li>kwin/scripting/workspace_wrapper.cpp <span style="color: \
grey">(c5b684a)</span></li>

 <li>kwin/useractions.cpp <span style="color: grey">(09e18c3)</span></li>

 <li>kwin/workspace.h <span style="color: grey">(9df435c)</span></li>

 <li>kwin/workspace.cpp <span style="color: grey">(b5c8014)</span></li>

</ul>

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




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








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



_______________________________________________
kwin mailing list
kwin@kde.org
https://mail.kde.org/mailman/listinfo/kwin


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic