From 6d0be86a4efae4d46f520df24d82d6773d57cdab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 20 Sep 2011 18:35:48 +0200 Subject: [PATCH] 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 --- js/ui/dash.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/js/ui/dash.js b/js/ui/dash.js index aa5f97270..36588c0d9 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js @@ -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; + } }); } },