dash: Add minor optimization to _adjustIconSize()

In case _adjustIconSize() is called while the the dash icons are
animating, some extra work is required to yield the expected result.
Skip those extra steps when the icons are not actually animating.

https://bugzilla.gnome.org/show_bug.cgi?id=649248
This commit is contained in:
Florian Müllner 2011-09-20 18:35:48 +02:00
parent b07f9932db
commit 6d95e8b988

View File

@ -427,14 +427,20 @@ Dash.prototype = {
let firstIcon = iconChildren[0]._delegate.child._delegate.icon;
// Icons may be animating, so enforce the current icon size
// during the size request
let [currentWidth, currentHeight] = firstIcon.icon.get_size();
let minHeight, natHeight;
firstIcon.icon.set_size(this.iconSize, this.iconSize);
let [minHeight, natHeight] = iconChildren[0].get_preferred_height(-1);
// Enforce the current icon size during the size request if
// the icon is animating
if (firstIcon._animating) {
let [currentWidth, currentHeight] = firstIcon.icon.get_size();
firstIcon.icon.set_size(currentWidth, currentHeight);
firstIcon.icon.set_size(this.iconSize, this.iconSize);
[minHeight, natHeight] = iconChildren[0].get_preferred_height(-1);
firstIcon.icon.set_size(currentWidth, currentHeight);
} else {
[minHeight, natHeight] = iconChildren[0].get_preferred_height(-1);
}
// Subtract icon padding and box spacing from the available height
@ -478,11 +484,15 @@ Dash.prototype = {
icon.icon.set_size(icon.icon.width * scale,
icon.icon.height * scale);
icon._animating = true;
Tweener.addTween(icon.icon,
{ width: targetWidth,
height: targetHeight,
time: DASH_ANIMATION_TIME,
transition: 'easeOutQuad'
transition: 'easeOutQuad',
onComplete: function() {
icon._animating = false;
}
});
}
},