kwin/scripting
Vlad Zagorodniy a281f2bce1 [effects/dialogparent] Fix flickering of parent windows
Summary:
If a modal window is closed and some alternative effect that animates
the disappearing of windows is enabled(e.g. the Glide effect, or the
Scale effect), the Dialog Parent effect can cause flickering of the
parent window because its animation duration doesn't match duration of
those alternative effects.

Also, if the Fade effect, the Glide effect, and the Scale effect are
disabled, the Dialog Parent will keep the parent window alive for no
good reason.

This change addresses that problem by adding keepAlive property to
`animate` function so scripted effects have more control over lifetime
of animated windows.

If both a modal window and its parent window are closed at the same time
(and there is no effect that animates the disappearing of windows), the
Dialog Parent will stop immediately(because windowDeleted will be
emitted right after windowClosed signal).

If both a modal window and its parent window are closed at the same time
(and there is effect that animates the disappearing of windows), the
Dialog Parent won't reference the latter window. Thus, it won't cause
flickering. I.e. it will "passively" animate parent windows.

BUG: 355036
FIXED-IN: 5.15.0

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D14919
2018-10-10 18:34:12 +03:00
..
CMakeLists.txt -Wmissing-include-dirs 2015-03-22 22:36:26 +01:00
dbuscall.cpp New QML Type DBusCall 2013-08-13 09:57:51 +02:00
dbuscall.h New QML Type DBusCall 2013-08-13 09:57:51 +02:00
documentation-effect-global.xml export AnimationEffect::set and ::cancel to script 2013-03-28 19:47:30 +01:00
documentation-global.xml Allow configuring script's screen edges from the KCM 2016-10-07 15:20:14 +01:00
genericscriptedconfig.cpp optimize string operations 2015-11-05 14:14:06 +00:00
genericscriptedconfig.h Drop our custom KLocalizedTranslator 2014-06-18 15:02:58 +02:00
genericscriptedconfig.json [kwin] Fix genericscripted config 2014-03-19 08:00:28 +01:00
kwinscript.desktop SVN_SILENT made messages (.desktop file) - always resolve ours 2017-09-27 09:13:10 +02:00
Messages.sh Fix message extraction 2018-05-20 08:14:50 +03:00
meta.cpp Fix no cast to/from ASCII intrduced issues 2013-07-24 09:58:33 +02:00
meta.h Export Toplevel to KWin::Scripts 2013-02-14 08:16:19 +01:00
screenedgeitem.cpp Add support for new touch screen edge actions to declarative KWin scripts 2017-04-07 16:17:48 +02:00
screenedgeitem.h Add support for new touch screen edge actions to declarative KWin scripts 2017-04-07 16:17:48 +02:00
scriptedeffect.cpp [effects/dialogparent] Fix flickering of parent windows 2018-10-10 18:34:12 +03:00
scriptedeffect.h [effects/dialogparent] Fix flickering of parent windows 2018-10-10 18:34:12 +03:00
scripting.cpp Avoid crash with on scripted window teardown with threaded quick render loop 2018-09-13 10:19:12 +01:00
scripting.h Remove Qt module declarations in includes 2018-06-05 18:07:23 +01:00
scripting_logging.cpp pedantic fixes 2016-07-16 13:14:44 -04:00
scripting_logging.h [scripting] Add dedicated logging category 2015-07-31 13:25:51 +02:00
scripting_model.cpp Drop cmakedefine HAVE_WAYLAND 2015-08-12 11:39:20 +02:00
scripting_model.h [scripting] ScriptingClientModel operates on AbstractClient 2015-06-06 18:53:55 +02:00
scriptingutils.cpp
scriptingutils.h Add support for new touch screen callbacks to KWin scripts and scripted effects 2017-04-07 16:18:09 +02:00
timer.cpp Strip module path from all Qt #include <> 2013-03-06 10:26:56 +01:00
workspace_wrapper.cpp Port some displayWidth/displayHeight usages to Screens::size() 2017-09-01 17:11:10 +02:00
workspace_wrapper.h Remove Qt module declarations in includes 2018-06-05 18:07:23 +01:00