Commit 5336c9a1 authored by Vlad Zahorodnii's avatar Vlad Zahorodnii

[effects/logout] Animate the disappearing of the logout screen

Summary:
Currently, the fade effect animates both the appearing and the
disappearing of the logout screen. We don't want that because
the logout effect should do that.

D14582 addresses that problem by adding "ksmserver ksmserver" window
class to the blacklist of the fade effect. With that change, only the
logout effect animates the appearing of the logout screen. But there is
a problem... If user clicks the cancel button, the logout screen
instantaneously disappears, instead of smoothly fading out.

This change addresses that problem by adding "out" animation.

Depends on D14582

Test Plan:
{F6175011}
//Now, only the logout effect animates the appearing and the disappearing of the logout screen.//

{F6175013}
//No smooth transitions when the logout effect is disabled.//

Reviewers: #kwin, #plasma, #vdg, davidedmundson

Reviewed By: #kwin, #plasma, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D14592
parent 226fb7d3
......@@ -21,10 +21,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************/
/*global effect, effects, animate, animationTime, Effect*/
var logoutEffect = {
duration: animationTime(800),
inDuration: animationTime(800),
outDuration: animationTime(400),
loadConfig: function () {
"use strict";
logoutEffect.duration = animationTime(800);
logoutEffect.inDuration = animationTime(800);
logoutEffect.outDuration = animationTime(400);
},
isLogoutWindow: function (window) {
"use strict";
......@@ -39,19 +41,44 @@ var logoutEffect = {
if (!logoutEffect.isLogoutWindow(window)) {
return;
}
animate({
// If the Out animation is still active, kill it.
if (window.outAnimation !== undefined) {
cancel(window.outAnimation);
delete window.outAnimation;
}
window.inAnimation = animate({
window: window,
duration: logoutEffect.duration,
duration: logoutEffect.inDuration,
type: Effect.Opacity,
from: 0.0,
to: 1.0
});
},
closed: function (window) {
"use strict";
if (!logoutEffect.isLogoutWindow(window)) {
return;
}
// If the In animation is still active, kill it.
if (window.inAnimation !== undefined) {
cancel(window.inAnimation);
delete window.inAnimation;
}
window.outAnimation = animate({
window: window,
duration: logoutEffect.outDuration,
type: Effect.Opacity,
from: 1.0,
to: 0.0
});
},
init: function () {
"use strict";
logoutEffect.loadConfig();
effects.windowAdded.connect(logoutEffect.opened);
effects.windowShown.connect(logoutEffect.opened);
effects.windowClosed.connect(logoutEffect.closed);
effects.windowHidden.connect(logoutEffect.closed);
}
};
logoutEffect.init();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment