kwin/effects
Martin Gräßlin fb69b791a1 Ensure that all Effects honour the grab roles correctly
Summary:
When windows get added some effects grab the window and want to be the
only one animating this window. For this the grab roles exists. An
effect being notified later on evaluates the grab state and does not
start the animation.

This process failed due to being dependent on the order the effects are
loaded. Window Added/Closed are signals emitted by EffectsHandler, thus
first come, first serve. The requested effect order does not play into
it.

Due to that it could happen that an Effect which should not animate,
started to animate as the grab was still there.

This change adds the possibility to be notified whenever the window data
changes. A new signal is added to EffectsHandler which is emitted
whenever the windowData changes. The interested effects connect to it
and cancel their (just started) animation for the window.

Adjusted effects are:
* ScaleIn
* Fade
* WobblyWindows

In case of WobblyWindows an additional logical error was fixed that the
animations were only run when an effect grabbed instead of the other way
around.

BUG: 336866
FIXED-IN: 5.8.4

Reviewers: #kwin, #plasma, broulik

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D3211
2016-11-07 11:45:09 +01:00
..
backgroundcontrast [effects] Disable Blur and BackgroundContrast on software emulation 2016-08-09 14:56:13 +02:00
blur [effects] Disable Blur and BackgroundContrast on software emulation 2016-08-09 14:56:13 +02:00
coverswitch Introduce an EffectsHandler::animationsSupported -> bool 2016-08-15 17:38:33 +02:00
cube Introduce an EffectsHandler::animationsSupported -> bool 2016-08-15 17:38:33 +02:00
desktopgrid [desktopgrid] Don't manipulate virtual desktop of desktop window 2016-11-04 09:32:24 +01:00
dialogparent SVN_SILENT made messages (.desktop file) - always resolve ours 2016-10-02 12:02:41 +00:00
diminactive Use SERVICE_TYPES parameter to kcoreaddons_desktop_to_json() 2015-12-09 23:42:45 +00:00
dimscreen
eyeonscreen SVN_SILENT made messages (.desktop file) - always resolve ours 2016-09-13 10:27:05 +00:00
fade Ensure that all Effects honour the grab roles correctly 2016-11-07 11:45:09 +01:00
fadedesktop SVN_SILENT made messages (.desktop file) - always resolve ours 2016-01-30 09:40:55 +00:00
fallapart Introduce an EffectsHandler::animationsSupported -> bool 2016-08-15 17:38:33 +02:00
flipswitch Introduce an EffectsHandler::animationsSupported -> bool 2016-08-15 17:38:33 +02:00
glide Introduce an EffectsHandler::animationsSupported -> bool 2016-08-15 17:38:33 +02:00
highlightwindow [effects] Repaint expandedGeometry in HighlightWindowsEffect 2016-09-14 10:44:07 +02:00
invert Port to CMake AUTOMOC 2016-02-01 21:05:36 +01:00
kscreen do not reinterpret_cast insufficient data 2015-10-05 23:41:16 +02:00
login SVN_SILENT made messages (.desktop file) - always resolve ours 2016-02-20 09:52:01 +00:00
logout/data [effects] Drop the logout effect 2016-08-24 10:09:22 +02:00
lookingglass [effects] Check for LimitedNPOT 2016-02-02 12:37:14 +01:00
magiclamp Introduce an EffectsHandler::animationsSupported -> bool 2016-08-15 17:38:33 +02:00
magnifier Port to CMake AUTOMOC 2016-02-01 21:05:36 +01:00
maximize SVN_SILENT made messages (.desktop file) - always resolve ours 2016-05-31 11:06:54 +00:00
minimizeanimation
morphingpopups SVN_SILENT made messages (.desktop file) - always resolve ours 2016-10-21 12:01:48 +00:00
mouseclick SVN_SILENT made messages (.desktop file) - always resolve ours 2016-02-20 09:52:01 +00:00
mousemark Correctly set i18n suffix in mousemark spinbox. 2016-11-02 13:07:39 +00:00
presentwindows Add support for touch events in the Effect system 2016-08-16 14:18:40 +02:00
resize SVN_SILENT made messages (.desktop file) - always resolve ours 2016-10-31 12:00:16 +00:00
scalein Ensure that all Effects honour the grab roles correctly 2016-11-07 11:45:09 +01:00
screenedge [effects] Use shader traits api in screenedge effect 2016-01-25 14:11:54 +01:00
screenshot Revert "Handle conflicts between epoxy and manually resolved function pointers" 2015-11-17 14:58:59 +01:00
sheet Introduce an EffectsHandler::animationsSupported -> bool 2016-08-15 17:38:33 +02:00
showfps SVN_SILENT made messages (.desktop file) - always resolve ours 2016-05-31 11:06:54 +00:00
showpaint [effects] Use shader traits in ShowPaint effect 2016-01-25 14:11:54 +01:00
slide Port to CMake AUTOMOC 2016-02-01 21:05:36 +01:00
slideback explicitly update the stack track on unminimization 2015-11-24 22:38:49 +01:00
slidingpopups Ensure that all Effects honour the grab roles correctly 2016-11-07 11:45:09 +01:00
snaphelper [effects] Use shader traits in SnapHelper effect 2016-01-25 14:11:54 +01:00
startupfeedback [effects] Combine all shaders in resources 2016-02-01 08:42:30 +01:00
thumbnailaside Port to CMake AUTOMOC 2016-02-01 21:05:36 +01:00
touchpoints [effects] Add new effect for touch point visualization 2016-08-18 10:36:48 +02:00
trackmouse [effects] Use shader traits API in trackmouse 2016-01-25 14:11:54 +01:00
translucency [effects/translucency] Cancel existing animations before starting new 2016-10-28 16:24:49 +02:00
windowaperture SVN_SILENT made messages (.desktop file) - always resolve ours 2016-02-09 10:37:25 +00:00
windowgeometry Use SERVICE_TYPES parameter to kcoreaddons_desktop_to_json() 2015-12-09 23:42:45 +00:00
wobblywindows Ensure that all Effects honour the grab roles correctly 2016-11-07 11:45:09 +01:00
zoom [effects/zoom] Remove unused variable 2016-06-29 10:51:47 +02:00
CMakeLists.txt [effects] Drop the logout effect 2016-08-24 10:09:22 +02:00
effect_builtins.cpp [effects] Drop the logout effect 2016-08-24 10:09:22 +02:00
effect_builtins.h [effects] Add enum value for new TouchPoints effect 2016-08-24 16:24:04 +02:00
kwineffect.desktop SVN_SILENT made messages (.desktop file) - always resolve ours 2015-12-06 09:17:34 +00:00
logging.cpp pedantic fixes 2016-07-16 13:14:44 -04:00
Messages.sh
shaders.qrc [effects] Drop the logout effect 2016-08-24 10:09:22 +02:00