Commit graph

11622 commits

Author SHA1 Message Date
Martin Gräßlin
fcebfa799f [kwin] Fix ordering
--warnings
2014-02-03 11:37:04 +01:00
Martin Gräßlin
f4597a3552 [kwin] Drop unused includes to KDebug 2014-02-03 11:36:46 +01:00
Martin Gräßlin
014cdf9267 [kwin] Mark unused variables as unused
--warnings
2014-02-03 11:36:21 +01:00
Martin Gräßlin
a6b12108c9 Merge branch 'KDE/4.11'
Conflicts:
	kwin/clients/oxygen/config/oxygendetectwidget.cpp
2014-02-02 12:01:38 +01:00
Marek Marczykowski-Górecki
2ccf1bc3f0 kwin: fix handling of window size hints with PResizeInc
Use base_width/base_height if provided by the application and fallback to
min_width/min_height only if not (according to ICCCM 4.1.2.3).

This fixes long standing bug with shrinking gnome-terminal window.

REVIEW: 115396
2014-02-02 11:57:19 +01:00
l10n daemon script
7f7fc12a05 SVN_SILENT made messages (.desktop file) 2014-02-02 04:21:17 +00:00
Martin Gräßlin
0b32e5e57d [kwin] Listen to mouse motion events in the screenedge windows
Problem description: if a window decoration is in the screenedge
(not really unlikely for maximized windows) we either did not get
mouse events to the decoration or the screenedge window. E.g. the
enter event didn't reach the approach window which means it doesn't
get unmapped and thus the motion events in that area are not passed
to the decoration below. The same happened for the screenedge window,
the enter event was just not delivered if there is a window decoration
in the edge.

To solve this problem we listen for motion events in the approach and
the edge window and pass them from the event filter to the screen edges.
If one of our windows contains that the position of the motion event
we trigger the edge just in the same way as we do with the enter event.
2014-02-01 10:03:49 +01:00
Martin Gräßlin
7c7f137832 [kwin] Drop handling for mouse motion event compression
Not needed as Qt does it for us in the xcb plugin - see
QXcbConnection::processXcbEvents().
2014-02-01 09:34:40 +01:00
Martin Gräßlin
73e6d9162d [oxygen/config] Use a pointer for the KWindowInfo member variable
The reason for this change is that the default ctor of KWindowInfo
creates a broken object. Calling any method in it will result in a
crush. Thus it is scheduled for removal in kwindowsystem framework
causing this code to no longer compile.

The solution is to use a pointer and set it to null as long as the
window has not been detected yet.

This is the same change as done for kcm kwinrules. And here we se
why copying code is bad ;-)
2014-02-01 08:58:26 +01:00
Hugo Pereira Da Costa
1e44f3edc8 fix includes 2014-01-31 15:24:13 +01:00
Thomas Lübking
66375ad741 Merge branch 'KDE/4.11'
Conflicts:
	kwin/effects/mouseclick/mouseclick.cpp
	plasma/generic/scriptengines/python/plasma-scriptengine-dataengine-python.desktop
	plasma/generic/scriptengines/python/plasma-scriptengine-runner-python.desktop
	plasma/generic/scriptengines/ruby/plasma-scriptengine-ruby-applet.desktop
	plasma/generic/scriptengines/ruby/plasma-scriptengine-ruby-dataengine.desktop
2014-01-30 20:55:35 +01:00
Thomas Lübking
62b277ad9f depend noborder on motif_noborder after reshape
app_noborder shall be the determined noborder (shape, type)
but relevant noborder shall be determined by rules and respect the
motif hint

BUG: 330573
FIXED-IN: 4.11.6
REVIEW: 115402
2014-01-30 20:25:09 +01:00
Thomas Lübking
34ecf8970e mouseclick FX, don't collect clicks unless active
BUG: 328010
FIXED-IN: 4.11.6
REVIEW: 115389
2014-01-30 20:23:42 +01:00
Martin Gräßlin
ae3cbca5f6 [kwin] Add a test application for testing size increment
The test application can verify that KWin correctly interprets the
WM_NORMAL_HINTS as described in ICCCM section 4.1.2.3 for the
combination of min size, base size and size increment.

Introduces an optional dependency to xcb-icccm library. It's optional
as the last time we tried to use it build.kde.org didn't like it at
all. Thus it should be possible to disable building this test app if
the dependency is not found.
2014-01-30 15:28:12 +01:00
Martin Gräßlin
2a5a89a0e4 [kwin] Remove b2 and laptop window decorations
They have been unmaintained for a long time and nobody stepped up to
port them to the changes in the decoration API. If at some time someone
wants to bring them back it's still in the git history.
2014-01-30 11:03:39 +01:00
Martin Gräßlin
04716ae5e3 [kwin] Rename tests subdirectories to autotests
Follows the naming schemes in frameworks and opens up the possibility
to include test applications for KWin in the tests subdirectory.
2014-01-30 11:01:59 +01:00
Martin Gräßlin
981e7afa96 [kwin/kcmrules] Call setupUi before accessing the ui widgets
This caused a crash with Qt 5.3 dev branch as the widgets are null
before setupUi is called. Might be a bug in Qt but still it makes
sense to first call setupUi and then do further changes to the Ui.
2014-01-30 10:39:40 +01:00
Martin Gräßlin
823222567e [kwin/kcmrules] Use a pointer for the KWindowInfo member variable
The reason for this change is that the default ctor of KWindowInfo
creates a broken object. Calling any method in it will result in a
crush. Thus it is scheduled for removal in kwindowsystem framework
causing this code to no longer compile.

The solution is to use a pointer and set it to null as long as the
window has not been detected yet. To ensure that this doesn't fail
badly an assert is added to the getter in DetectWidget.
2014-01-30 10:35:35 +01:00
l10n daemon script
8bd7159ebc SVN_SILENT made messages (.desktop file) 2014-01-30 06:49:57 +00:00
l10n daemon script
c96df87475 SVN_SILENT made messages (.desktop file) 2014-01-30 04:16:08 +00:00
Thomas Lübking
ffaa9d336e Merge branch 'KDE/4.11'
Conflicts:
	kcontrol/workspaceoptions/workspaceoptions.desktop
	kwin/sm.cpp
2014-01-29 20:28:27 +01:00
Thomas Lübking
23ae01ffd9 full repaints in logout effect
REVIEW: 115276
2014-01-29 19:58:54 +01:00
Thomas Lübking
6bd74cebf3 no autogrouping if deco doesn't support it
BUG: 328272
FIXED-IN: 4.11.6
REVIEW: 115308
2014-01-29 19:58:32 +01:00
Thomas Lübking
374ea9091e remove clientMachine from session handling
since the hostname is resolved asynchronous, testing it can easily fail

CCBUG: 326893
FIXED-IN: 4.11.6
REVIEW: 114963
2014-01-29 19:58:15 +01:00
Thomas Lübking
5032520920 cut spurious \0 byte from string properties
added with 26c263cc1de9cf0af66c12d0d746cd8ae7b1744a

CCBUG: 326893
FIXED-IN: 4.11.6
REVIEW: 114963
2014-01-29 19:57:53 +01:00
Thomas Lübking
edf0ed895f 1-pass change maximized <-> quicktiled geometry
REVIEW: 115307
2014-01-29 19:57:32 +01:00
Thomas Lübking
79c3fa55f2 merge buffer_age render into general render code
avoiding the blocking swapinterval detection causes
issues in the timing strategy and prevents protection
against CPU overload on the nvidia blob

BUG: 329821
FIXED-IN: 4.11.6
REVIEW: 115306
2014-01-29 19:56:14 +01:00
l10n daemon script
1000f99072 SVN_SILENT made messages (.desktop file) 2014-01-29 04:18:42 +00:00
Martin Gräßlin
fc9b7442da Merge branch 'KDE/4.11'
Conflicts:
	kwin/atoms.cpp
	kwin/atoms.h
	kwin/toplevel.cpp
	kwin/toplevel.h
2014-01-28 09:47:53 +01:00
Martin Gräßlin
882d55f1b5 Allow windows to specify that they should not get animated on window close
By setting the X property _KDE_NET_WM_SKIP_CLOSE_ANIMATION to 1 a window
can request to be excluded from any close animation. This property is
read in Toplevel, so that it is available to both Client and Unmanaged.

If the window has this property set the Scene suppresses the paintWindow
loop of the Deleted. Thus no effect needs to be adjusted. But an effect
using drawWindow directly would still be able to render the Deleted as
there is no suppression.

Furthermore the property is passed to the EffectWindow so that an
Effect can make use of this functionality and not start the animation
in the first place.

REVIEW: 115288
CCBUG: 279615

Backported from 9497b4ddb681ac50dbe9c015e05a3f12fd496da8
2014-01-28 09:01:55 +01:00
Martin Gräßlin
5b07d4c2a1 Merge branch 'KDE/4.11'
Conflicts:
	kwin/egl_wayland_backend.cpp
	kwin/eglonxbackend.cpp
	kwin/glxbackend.cpp
	kwin/scene_opengl.cpp
	plasma/generic/wallpapers/color/plasma-wallpaper-color.desktop
	plasma/generic/wallpapers/image/plasma-wallpaper-image.desktop
2014-01-28 08:18:41 +01:00
James Jones
6acef12932 Don't call into GL without a context
After losing current from the EGL or GLX
context, calls to the GL or GLES functions
have undefined behavior.  Perform all
cleanup that may touch OpenGL and check for
GL errors before losing current from the
context.

REVIEW: 115311
2014-01-28 07:54:32 +01:00
Martin Gräßlin
2fbc8414a7 Allow windows to specify that they should not get animated on window close
By setting the X property _KDE_NET_WM_SKIP_CLOSE_ANIMATION to 1 a window
can request to be excluded from any close animation. This property is
read in Toplevel, so that it is available to both Client and Unmanaged.

If the window has this property set the Scene suppresses the paintWindow
loop of the Deleted. Thus no effect needs to be adjusted. But an effect
using drawWindow directly would still be able to render the Deleted as
there is no suppression.

Furthermore the property is passed to the EffectWindow so that an
Effect can make use of this functionality and not start the animation
in the first place.

REVIEW: 115288
2014-01-28 07:43:35 +01:00
Martin Gräßlin
29af52fbf1 Keep KWin responsive while loading all effects
Loading all effects during startup can take some time[1] and during
that time the screen is frozen as the loading blocks the compositor.

This change doesn't load effects directly but puts them into a queue.
The loading is controlled by invoking the dequeue through a queued
connection. Thus we get a firing compositing timer in between and can
ensure that a frame is rendered when needed and also react to X events
during the loading.

[1] On my high-end system the set of effects I use take about 200 msec
    to load.

REVIEW: 115297
2014-01-28 07:41:57 +01:00
Martin Gräßlin
1576c55cd2 [kwin] Add better support for Notification windows
KWin starts to support the Notification window type and has an own
layer for all notification windows. They are kept above the above
layer but do not go over active fullscreen windows.

REVIEW: 115298
2014-01-28 07:40:34 +01:00
l10n daemon script
99bd9490b5 SVN_SILENT made messages (.desktop file) 2014-01-27 06:37:40 +00:00
l10n daemon script
253c2dab5a SVN_SILENT made messages (.desktop file) 2014-01-27 04:08:32 +00:00
l10n daemon script
e12bd6cffc SVN_SILENT made messages (.desktop file) 2014-01-26 04:10:18 +00:00
l10n daemon script
0ee6e4b422 SVN_SILENT made messages (.desktop file) 2014-01-25 03:39:46 +00:00
l10n daemon script
e33092cce3 SVN_SILENT made messages (.desktop file) 2014-01-24 21:04:18 +00:00
Laurent Navet
d246518b9f KWin: kwinoptions: port to KF5
CMakelist ui port to KF5
clean unneeded #include

Signed-off-by: Laurent Navet <laurent.navet@gmail.com>
REVIEW: 115272
2014-01-24 14:15:34 +01:00
Martin Gräßlin
76efe517a7 Turn built-in effects into a library kwin links against
As all effects have always been compiled into the same .so file it's
questionable whether resolving the effects through a library is useful
at all. By linking against the built-in effects we gain the following
advantages:
* don't have to load/unload the KLibrary
* don't have to resolve the create, supported and enabled functions
* no version check required
* no dependency resolving (effects don't use it)
* remove the KWIN_EFFECT macros from the effects

All the effects are now registered in an effects_builtins file which
maps the name to a factory method and supported or enabled by default
methods.

During loading the effects we first check whether there is a built-in
effect by the given name and make a shortcut to create it through that.
If that's not possible the normal plugin loading is used.

Completely unscientific testing [1] showed an improvement of almost 10
msec during loading all the effects I use.

[1] QElapsedTimer around the loading code, start kwin five times, take
average.

REVIEW: 115073
2014-01-24 14:13:59 +01:00
Martin Gräßlin
daf0772c35 [kwin/backgroundcontrast] Fix shader on GLSL 1.10 code path
We need to use the varying_in/out variables, the code was a little
bit too modern.

At the same time remove the identity matrix and replace it by mat4(1.0).

Note: the shader should probably go into glsl files as they are not
really generated.
2014-01-23 15:44:12 +01:00
Marco Martin
f2acaa2826 remove connect to nonexisting signal
slotWindowDeleted is not here anymore
2014-01-23 15:18:45 +01:00
Marco Martin
778a81ceb8 Merge branch 'mart/kwin/backgroundContrast2' 2014-01-23 14:48:31 +01:00
Marco Martin
b7ded05596 fade out the effect if the window opacity is < 1 2014-01-23 14:47:49 +01:00
Marco Martin
65c3c4c1b4 remove paintEffectFrame implementation, add a FIXME 2014-01-23 14:47:49 +01:00
Marco Martin
3d9ddb0cf2 correctly take the matrix of floats
* use the atom, not XA_cardinal
* we never do this effect behind the decoration
2014-01-23 14:47:22 +01:00
Marco Martin
210f7d3eff reintroduce prepaintscreen
* work also without blur enabled
* try to pass only the 3 color parameters
2014-01-23 14:47:01 +01:00
Marco Martin
dabafc4988 simplify: remove prepaintwindow/screen
* update effect name
* remove unused variable
2014-01-23 14:46:13 +01:00