messageTray: Fix some artifacts when tweening back from the tray
The math to calculate the clip isn't quite right here -- it overcompensates in the Y value. https://bugzilla.gnome.org/show_bug.cgi?id=685341
This commit is contained in:
parent
3ed5f9cd15
commit
9fac285b69
@ -2094,16 +2094,25 @@ const MessageTray = new Lang.Class({
|
|||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateDesktopCloneClip: function() {
|
||||||
|
let geometry = this._bottomMonitorGeometry;
|
||||||
|
let progress = -Math.round(this._desktopClone.y);
|
||||||
|
this._desktopClone.set_clip(geometry.x,
|
||||||
|
geometry.y + progress,
|
||||||
|
geometry.width,
|
||||||
|
geometry.height - progress);
|
||||||
|
},
|
||||||
|
|
||||||
_showDesktopClone: function() {
|
_showDesktopClone: function() {
|
||||||
let bottomMonitor = Main.layoutManager.bottomMonitor;
|
let bottomMonitor = Main.layoutManager.bottomMonitor;
|
||||||
let geometry = new Clutter.Geometry({ x: bottomMonitor.x,
|
this._bottomMonitorGeometry = { x: bottomMonitor.x,
|
||||||
y: bottomMonitor.y,
|
y: bottomMonitor.y,
|
||||||
width: bottomMonitor.width,
|
width: bottomMonitor.width,
|
||||||
height: bottomMonitor.height
|
height: bottomMonitor.height };
|
||||||
});
|
|
||||||
if (this._desktopClone)
|
if (this._desktopClone)
|
||||||
this._desktopClone.destroy();
|
this._desktopClone.destroy();
|
||||||
this._desktopClone = new Clutter.Clone({ source: global.window_group, clip: geometry });
|
this._desktopClone = new Clutter.Clone({ source: global.window_group, clip: new Clutter.Geometry(this._bottomMonitorGeometry) });
|
||||||
Main.uiGroup.insert_child_above(this._desktopClone, global.window_group);
|
Main.uiGroup.insert_child_above(this._desktopClone, global.window_group);
|
||||||
this._desktopClone.x = 0;
|
this._desktopClone.x = 0;
|
||||||
this._desktopClone.y = 0;
|
this._desktopClone.y = 0;
|
||||||
@ -2113,13 +2122,7 @@ const MessageTray = new Lang.Class({
|
|||||||
{ y: -this.actor.height,
|
{ y: -this.actor.height,
|
||||||
time: ANIMATION_TIME,
|
time: ANIMATION_TIME,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
onUpdate: function() {
|
onUpdate: Lang.bind(this, this._updateDesktopCloneClip)
|
||||||
let progress = Math.round(-this.y);
|
|
||||||
this.set_clip(geometry.x,
|
|
||||||
geometry.y + progress,
|
|
||||||
geometry.width,
|
|
||||||
geometry.height - progress);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -2142,10 +2145,10 @@ const MessageTray = new Lang.Class({
|
|||||||
this._desktopClone.destroy();
|
this._desktopClone.destroy();
|
||||||
this._desktopClone = null;
|
this._desktopClone = null;
|
||||||
this._desktopCloneState = State.HIDDEN;
|
this._desktopCloneState = State.HIDDEN;
|
||||||
|
this._bottomMonitorGeometry = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let geometry = this._desktopClone.clip;
|
|
||||||
this._tween(this._desktopClone, '_desktopCloneState', State.HIDDEN,
|
this._tween(this._desktopClone, '_desktopCloneState', State.HIDDEN,
|
||||||
{ y: 0,
|
{ y: 0,
|
||||||
time: ANIMATION_TIME,
|
time: ANIMATION_TIME,
|
||||||
@ -2153,14 +2156,9 @@ const MessageTray = new Lang.Class({
|
|||||||
onComplete: Lang.bind(this, function() {
|
onComplete: Lang.bind(this, function() {
|
||||||
this._desktopClone.destroy();
|
this._desktopClone.destroy();
|
||||||
this._desktopClone = null;
|
this._desktopClone = null;
|
||||||
|
this._bottomMonitorGeometry = null;
|
||||||
}),
|
}),
|
||||||
onUpdate: function() {
|
onUpdate: Lang.bind(this, this._updateDesktopCloneClip)
|
||||||
let progress = Math.round(-this.y);
|
|
||||||
this.set_clip(geometry.x,
|
|
||||||
geometry.y - progress,
|
|
||||||
geometry.width,
|
|
||||||
geometry.height + progress);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user