windowManager: Add mechanism to block animations

Add an API to allow blocking animations in situations where
they aren't desireable.

https://bugzilla.gnome.org/show_bug.cgi?id=642188
This commit is contained in:
Adel Gadllah 2011-02-16 21:05:20 +01:00
parent 3944df1bd2
commit 76d788a186

View File

@ -93,6 +93,8 @@ WindowManager.prototype = {
this._dimmedWindows = []; this._dimmedWindows = [];
this._animationBlockCount = 0;
this._switchData = null; this._switchData = null;
this._shellwm.connect('kill-switch-workspace', Lang.bind(this, this._switchWorkspaceDone)); this._shellwm.connect('kill-switch-workspace', Lang.bind(this, this._switchWorkspaceDone));
this._shellwm.connect('kill-window-effects', Lang.bind(this, function (shellwm, actor) { this._shellwm.connect('kill-window-effects', Lang.bind(this, function (shellwm, actor) {
@ -139,8 +141,16 @@ WindowManager.prototype = {
this._shellwm.connect('keybinding::' + keybinding, handler); this._shellwm.connect('keybinding::' + keybinding, handler);
}, },
blockAnimations: function() {
this._animationBlockCount++;
},
unblockAnimations: function() {
this._animationBlockCount = Math.max(0, this._animationBlockCount - 1);
},
_shouldAnimate : function(actor) { _shouldAnimate : function(actor) {
if (Main.overview.visible) if (Main.overview.visible || this._animationsBlocked > 0)
return false; return false;
if (actor && (actor.meta_window.get_window_type() != Meta.WindowType.NORMAL)) if (actor && (actor.meta_window.get_window_type() != Meta.WindowType.NORMAL))
return false; return false;