🎉 Allow setting actor transitions in overview

This commit is contained in:
Simon Schneegans
2022-01-21 20:17:24 +01:00
parent 156cefcd1d
commit 8f8f4dc7c0
9 changed files with 113 additions and 151 deletions
+11 -19
View File
@@ -42,7 +42,8 @@ var TRexAttack = class TRexAttack {
// This will be called in various places where a unique identifier for this effect is
// required. It should match the prefix of the settings keys which store whether the
// effect is enabled currently (e.g. the '*-close-effect').
// effect is enabled currently (e.g. '*-close-effect'), and its animation time
// (e.g. '*-animation-time').
static getNick() {
return 'trex';
}
@@ -84,26 +85,17 @@ var TRexAttack = class TRexAttack {
return new Shader(settings);
}
// This is also called from extension.js. It is used to tweak the ongoing transitions of
// This is also called from extension.js. It is used to tweak the ongoing transition of
// the actor - usually windows are faded to transparency and scaled down slightly by
// GNOME Shell. Here, we modify this behavior as well as the transition duration.
static tweakTransitions(actor, settings) {
const animationTime = settings.get_int('trex-animation-time');
const tweakTransition = (property, value) => {
const transition = actor.get_transition(property);
if (transition) {
transition.set_to(value);
transition.set_duration(animationTime);
}
};
// For this effect, we slightly increase the window's scale as part of the warp
// effect.
// GNOME Shell. For this effect, we slightly increase the window's scale as part of the
// warp effect.
static getCloseTransition(actor, settings) {
const warp = 0.5 * settings.get_double('claw-scratch-warp');
tweakTransition('opacity', 255);
tweakTransition('scale-x', 1.0 + warp);
tweakTransition('scale-y', 1.0 + warp);
return {
'opacity': {to: 255},
'scale-x': {to: 1.0 + warp},
'scale-y': {to: 1.0 + warp}
};
}
}