Commit graph

12360 commits

Author SHA1 Message Date
Thomas Lübking
c455087248 add selectWmInputEventMask function
It sets the mask required for a WM and in addition
preserves the eventmask present on the root window for
this client (as set by any lib etc.)
2014-07-03 18:39:38 +02:00
Thomas Lübking
ddd8ea4c74 fix spinbox width
BUG: 336150
2014-07-03 18:39:38 +02:00
Martin Gräßlin
f0e1e3187e Add a script to enforce window decorations for GTK windows
This is going to be a controversal change. It enforces KWin decorations
on all client side decorated windows from GTK+. Unfortunately we are
caught between a rock and a hard place. Keeping the status quo means
having broken windows and a more or less broken window manager due to
GTK+ including the shadow in the windows. This is no solution.
Enforcing server side decorations visually breaks the windows. This is
also no solution. So why do it?

It's our task to provide the best possible user experience and KWin is
a window manager which has always done great efforts to fix misbehaving
windows. One can think of the focus stealing prevention, the window rules
and lately the scripts. The best possible window management experience is
our aim. This means we cannot leave the users with the broken windows
from GTK.

The issues we noticed were reported to GTK+ about 2 months ago and we are
working on improving the situation. Unfortunately several issues are not
yet addressed and others will only be addressed in the next GTK+ release.
We are working on improving the NETWM spec (see [1]) to ensure that the
client side decorated windows are not in a broken state. This means the
enforcment is a temporary solution and will be re-evaluated with the next
GTK release. I would prefer to not have to do such a change, if some of
the bugs were fixed or GTK+ would not use client-side-decos on wms not
yet supporting those all of this would be a no issue.

For a complete list of the problems caused by GTK's decos see bug [2] and
the linked bug reports from there.

The change is done in a least inversive way in KWin. We just check for
the property _GTK_FRAME_EXTENTS and create a Q_PROPERTY in Client for it.
If we add support for the frame extents in future we would also need
this. So it's not a change just for enforcing the decoration.

The actual enforcing is done through a KWin script so users can still
disable it.

REVIEW: 119062

[1] https://mail.gnome.org/archives/wm-spec-list/2014-June/msg00002.html
[2] https://bugzilla.gnome.org/show_bug.cgi?id=729721
2014-07-03 16:03:22 +02:00
Martin Gräßlin
8bdbe4dc15 Add default shortcuts for virtual desktop switching actions
This makes the virtual desktop KCM properly show Ctrl+F1-F4 as the
default shortcuts for switch to desktop.

REVIEW: 119051
2014-07-03 16:02:34 +02:00
Jonathan Riddell
ce48a1b27b bump version for Plasma 5 RC release 2014-07-03 15:22:25 +02:00
Sebastian Kügler
70015e2bed Fix category for kwindecorations kcm 2014-07-01 16:23:40 +02:00
Sebastian Kügler
b82bce4d5b Adapt to latet changes from review 2014-07-01 12:44:42 +02:00
Sebastian Kügler
b5000a21b7 Adapt to new systemsettings categories
Roughly, this moves the systemsettings-visible KCModules under either
Workspace | Window Behavior and Workspace | Desktop Behavior, as laid
out here: http://forum.kde.org/viewtopic.php?f=285&t=121053&start=30#p313837
2014-07-01 12:44:41 +02:00
Martin Gräßlin
7c745ef991 [aurorae] Use NativeRendering for decoration title 2014-06-30 14:33:09 +02:00
Martin Gräßlin
6e195331f6 Revert "set QSG_RENDER_LOOP as basic if not explicitly set"
This reverts commit c09d63d192.

The test results we got indicate that on NVIDIA the problems with the
threaded rendering loop do not exist and at the same time the rendering
result improves a lot. As Qt still disables the threaded rendering loop
for the problematic drivers, it's better to not force the basic rendering
loop.
2014-06-30 14:21:40 +02:00
l10n daemon script
28c7f3c47d SVN_SILENT made messages (.desktop file) 2014-06-29 08:41:34 +00:00
Hrvoje Senjan
25c731ab7e Install KWin icons to hicolor namespace
1) helps avoid clashing with 4.x version
2) it's more correct to have them in hicolor

REVIEW: 118932
2014-06-27 13:20:49 +02:00
Martin Gräßlin
27ac23ba19 [effects] Rename text of ToggleMouseClick action
"Toggle Effect" is too generic as it's used in the steal shortcut dialog.

REVIEW: 118912
2014-06-24 09:40:13 +02:00
Martin Gräßlin
e8241313fc [libkwineffects] Require strict binding for intel driver
According to driver devs it's a "buggy micro-optimisation", see
https://bugs.freedesktop.org/show_bug.cgi?id=80349#c1

BUG: 336589
REVIEW: 118893
2014-06-24 09:26:46 +02:00
Martin Gräßlin
9c03793fac [kcmkwin/kwincompositing] Qt.Unchecked not Qt.UnChecked
Fixes that all configure buttons are enabled.
2014-06-24 09:24:54 +02:00
Martin Gräßlin
2088ce0e7e [kcmkwin/kwincompositing] Drop the OpenGLErrorView from Effects
As we have the split between Effects and Compositor settings nowadays
it's incorrect to have an Compositor related option exposed in the
Effects settings view. Thus the OpenGLErrorView should be removed. As
a nice side-effect that simplifies the main qml file quite a bit by
turning the EffectView from Item into Rectangle.

If it shows that we need the reset GL check in the effects view it would
be better to use a KMessageWidget like in the compositing view.

BUG: 336342
REVIEW: 118790
2014-06-23 08:09:31 +02:00
Martin Gräßlin
3a4bba7542 [aurorae] Fix the position passed in the QMouseEvent for processMousePressEvent
The position passed to core didn't take care of padding and that position
passed to decorationPos caused completely broken resize/moving behavior.
E.g. resize was started where it should have been moving, or jumping of
position when starting moving.

REVIEW: 118803
2014-06-23 08:08:36 +02:00
Martin Gräßlin
bc236f3a4d [aurorae] Improve reading the border elements from C++ side
The KWin::Borders element is provided by an extension plugin. The reason
for that is to be able to use it from e.g. the kcm or Plasmate without
needing to compile the code in.

But this results in Aurorae itself not being able to access the element.
The solution is to first load our decoration plugin and afterwards
register the borders element again with the version compiled in from
Aurorae.

With that we can now read all borders and paddings without using
properties. Also we could connect to change signals and have the borders
and padding handling completely stateful. Might be an idea for extending
the decoration library...
2014-06-23 08:08:36 +02:00
Martin Gräßlin
b85984fe8e [aurorae] Recreate decoration on config change
Border size might have changed and because of that we need to recreate
the decoration.
2014-06-23 07:42:18 +02:00
Martin Gräßlin
99b5426a21 [kcmkwin/compositing] Better check for enabled state of Effects
Introduces partially checked checkboxes for Effects. If an Effect
has an enabled by default function and doesn't have an explicit
value in the config file the checkbox is set to partially. If there
is a value in the config, this will be used.

Clicking on Default will return to the partially checked state.

So far only the built-in effects support the partially checked state
and also the mutual exclusive groups do not support the partial checked
(main reason: RadioButton doesn't support it)

BUG: 336045
REVIEW: 118658
2014-06-21 07:43:55 +02:00
Nicolás Alvarez
5efc8e96cf Fix typo in COMPLIANCE file.
This file is probably abandoned, but I had this change in my working copy
for a long time, I might as well push it :)
2014-06-20 21:27:12 -03:00
l10n daemon script
026f5ea660 SVN_SILENT made messages (.desktop file) 2014-06-20 09:01:14 +00:00
Martin Gräßlin
634de251c3 [effects/presentwindows] Trigger using LaunchA button
On MacBooks the "Exposé" button is on XF86LaunchA. Let's use it
for activating Present Windows (ALL) as an alternative shortcut.
For non-macbook users this doesn't hurt, for MacBook users it's a
nice touch to have the key working as indicated by the pictogram.

Yes, it's realy Key_LaunchC:
"On X11 this key is mapped to XF86XK_LaunchA key for legacy reasons."

REVIEW: 118721
2014-06-20 09:26:28 +02:00
Martin Gräßlin
8aa8617ed4 Drop our custom KLocalizedTranslator
It's upstreamed to ki18n framework.
2014-06-18 15:02:58 +02:00
Martin Gräßlin
822fca474b Send a synthetic button release event to the decoration for moving client
Qt doesn't process the button release event for our moveresize window
wrapper. This means that Qt still thinks the button is pressed and breaks
a few things like one cannot enter another move/resize mode.

BUG: 336204
BUG: 336343
REVIEW: 118794
2014-06-18 14:12:25 +02:00
Hrvoje Senjan
52653aaede Rename KWin binary to kwin_x11
This servers two purposes.
1. it makes KWin/5 co-installable with KWin/4 as now binary and
   all libraries etc. are renamed or installed to a different
   location.
2. In future we need a dedicated X11 and Wayland main function
   anyway. Thus it makes most sense to rename to kwin_x11 directly
   instead of first renaming to kwin5. The reason why we need to
   have dedicated main functions is that kwin needs to check early
   whether X11 is working or Wayland is working. Right now the first
   thing kwin does is trying to connect to the XServer. This happens
   before the QApplication is constructed and before command line
   args are processed. On Wayland we won't want to test whether we
   can connect to the XServer. As it's too early to check whether we
   are starting kwin for X11 or Wayland the most convenient way is to
   have dedicated binaries - thus a rename is needed. Just renaming
   kwin for wayland is also not a good idea as in future the "main"
   kwin will be for wayland not for X11. Another case for the dedicated
   binaries is the Application class, which right now first tries to
   claim the X11 Window Manager Selection. Again on Wayland even with
   XWayland we won't need that. KWin will be the window manager for
   XWayland if KWin is the Wayland compositor. There is no need to even
   try to support anything else. Most likely it will even be KWin to
   start the XWayland server, so we can be sure that there is no other
   WM running and thus no need to claim the selection and abort if it
   fails.

REVIEW: 118266
2014-06-16 15:34:34 +02:00
Martin Gräßlin
8c42df77e0 [kcmkwin/kwindecoration] Mock signals in AuroraeDecoration.qml
This silences some connection failed runtime warnings.

BUG: 336278
2014-06-16 11:37:48 +02:00
Martin Gräßlin
500ff7f68c [clients/aurorae] Change some connects to new syntax 2014-06-16 11:37:48 +02:00
l10n daemon script
4a88e1b005 SVN_SILENT made messages (.desktop file) 2014-06-16 08:24:58 +00:00
Martin Gräßlin
58668e52a0 [kcmkwin/compositing] Show warning message when selecting "dangerous" options
The idea is to warn the user that changing the settings might break
the setup when we know it could be dangerous. The following cases are
considered:
* Scale filter Accurate
* Tearing prevention
* keep window thumbnail always
* EGL if EGL and GLX are available
* unredirect fullscreen not working on all hardware

In addition the OpenGL is Unsafe warning is turned int a KMessageWidget
which is also used for all the other warnings.

REVIEW: 118494
2014-06-16 09:04:33 +02:00
l10n daemon script
54d85c8a73 SVN_SILENT made messages (.desktop file) 2014-06-15 08:26:15 +00:00
l10n daemon script
eb5abedbe7 SVN_SILENT made messages (.desktop file) 2014-06-12 08:30:34 +00:00
Martin Gräßlin
ed1e49f204 Fix build
Never push before first coffee!
2014-06-12 07:47:27 +02:00
Martin Gräßlin
983561107a [kcmkwin/compositing] Only store changed Effects
Keep track of which Effect got changed and only sync those to the
config which actually changed.

REVIEW: 118660
2014-06-12 07:26:22 +02:00
Martin Gräßlin
ed747d82ab [kcmkwin/compositing] Use Effect name as configuration window title
REVIEW: 118632
2014-06-12 07:22:17 +02:00
Martin Gräßlin
8919cd5f54 [effects] Simplify supported check in blur and backgroundcontrast
GLSL is always required nowadays on GL compositor.

REVIEW: 118642
2014-06-11 14:50:01 +02:00
Marco Martin
490e733590 Distinguish empty and non existent properties
This restores the behavior on KWin4: if I set an X property that doesn't have any data on a window, it's still information, so this makes the Xcb wrapper return an empty QByteArray that is not null.
EffectWindow::readProperty() now returns an empty QByteArray constructed the same way as it was in KWin4.

REVIEW:118645
BUG:335446
2014-06-11 11:08:02 +02:00
l10n daemon script
ea866906f0 SVN_SILENT made messages (.desktop file) 2014-06-11 08:21:08 +00:00
Martin Gräßlin
a29289ccb3 [kcmkwin/compositing] Remove dead window management special case code 2014-06-11 09:29:12 +02:00
Martin Gräßlin
3420ab17bb [kcmkwin/compositing] Don't load the EffectsModel twice
The model gets initialized from the ::load method, no need to do it
from ctor as well.
2014-06-11 08:32:21 +02:00
Martin Gräßlin
060c93233e Make xcb-icccm truely optional
ICCCM dependency is a beast due to two different existing versions in
different packages. Thus it cannot be a hard dep without causing problems
for our downstreams.

This change ensures that ICCCM is really considered as an optional dep
and that the version we need is found, if not we mark it as non-found.

ICCCM is only used by one test application which can easily be disabled
and some enum values are used in events.cpp. If ICCCM is not found those
are replaced by defines generated in config-kwin.h.

BUG: 336035
2014-06-11 07:51:07 +02:00
Martin Gräßlin
0c4aaaf4ad [scripting] Support loading translations for UI loaded configs
Scripts and scripted effects can provide a ui file which gets loaded at
runtime. Obviously such a ui file is not translated. This introduces
quite a hack to load the translated strings.

In the metadata.desktop file the scripted component can provide a key
X-KWin-Config-TranslationDomain. The genericscriptedconfig tries to
locate the metadata.desktop file and reads this entry. If it is present
we extract all string properties of the loaded UI and pass them through
ki18nd.

REVIEW: 118585
2014-06-10 15:49:19 +02:00
Martin Gräßlin
d0c83ddbf3 [kcmkwin/deco] Support loading translations for UI loaded configs
Qml based Aurorae themes can provided a ui file which gets loaded at
runtime. Obviously such a ui file is not translated. This introduces
quite a hack to load the translated strings.

First of all a new property is added to the service file for
specifying the translation domain to be used for the config UI. If
such a translation domain is set we extract all string properties of
the loaded UI and pass them through ki18nd.
2014-06-10 15:49:19 +02:00
l10n daemon script
e73f6b2278 SVN_SILENT made messages (.desktop file) 2014-06-10 10:37:36 +00:00
Martin Gräßlin
1f4981fc0b [tabbox] Bring back disabled unit tests
SwitcherItem is disabled for the unit test to reduce pulled in deps.
2014-06-10 11:14:59 +02:00
Martin Gräßlin
a290209b3d Create dedicated class for CompositorDBusInterface
Similar to the already existing DBusInterface wrapper for the
org.kde.KWin interface a new CompositorDBusInterface is introduced for
org.kde.kwin.Compositing.

That way the DBus interface is split from the implementation and DBus
specific methods are no longer required in the Compositor class.

The deprecated DBus methods
* toggleCompositing(bool)
* setCompositing(bool)

are removed.

REVIEW: 118463
2014-06-10 10:52:25 +02:00
l10n daemon script
9b869958b3 SVN_SILENT made messages (.desktop file) 2014-06-08 08:27:53 +00:00
l10n daemon script
4c49449bcb SVN_SILENT made messages (.desktop file) 2014-06-07 08:25:25 +00:00
l10n daemon script
abe62085e8 SVN_SILENT made messages (.desktop file) 2014-06-06 08:52:09 +00:00
Martin Gräßlin
433850a314 [kcmkwin/compositing] Set translationDomain for KDeclarative 2014-06-06 07:47:25 +02:00