[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"><</span><span class="n">QString</span><span class="o">></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">&</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'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.</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'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.</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'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 :-)</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'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 ?</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'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)</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;">>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.</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;">> 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.</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;">>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&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</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