[gnome-shell] dash: Ignore hiding items in _adjustIconSize()
- From: Florian MÃllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] dash: Ignore hiding items in _adjustIconSize()
- Date: Mon, 17 Oct 2011 14:15:07 +0000 (UTC)
commit 790b9d3371289300ed66b8b19879f802c64ac050
Author: Florian MÃllner <fmuellner gnome org>
Date: Mon Sep 19 23:47:16 2011 +0200
dash: Ignore hiding items in _adjustIconSize()
Rather than relying on the caller to hide the remove target and
removed items before calling _adjustIconSize(), move that logic
into _adjustIconSize() itself.
https://bugzilla.gnome.org/show_bug.cgi?id=649248
js/ui/dash.js | 55 ++++++++++++++++++++++++-------------------------------
1 files changed, 24 insertions(+), 31 deletions(-)
---
diff --git a/js/ui/dash.js b/js/ui/dash.js
index 91c63e9..1a87b80 100644
--- a/js/ui/dash.js
+++ b/js/ui/dash.js
@@ -37,6 +37,7 @@ DashItemContainer.prototype = {
this.child = null;
this._childScale = 1;
this._childOpacity = 255;
+ this.animatingOut = false;
},
_allocate: function(actor, box, flags) {
@@ -115,6 +116,7 @@ DashItemContainer.prototype = {
return;
}
+ this.animatingOut = true;
this.childScale = 1.0;
Tweener.addTween(this,
{ childScale: 0.0,
@@ -177,12 +179,6 @@ RemoveFavoriteIcon.prototype = {
this._iconBin._delegate = this;
this.setChild(this._iconBin);
- this.hiding = false;
- },
-
- animateOutAndDestroy: function() {
- DashItemContainer.prototype.animateOutAndDestroy.call(this);
- this.hiding = true;
},
_createIcon: function(size) {
@@ -314,15 +310,12 @@ Dash.prototype = {
_endDrag: function() {
this._clearDragPlaceholder();
if (this._favRemoveTarget) {
- this._favRemoveTarget.actor.hide();
- this._adjustIconSize();
- this._favRemoveTarget.actor.show();
-
this._favRemoveTarget.animateOutAndDestroy();
this._favRemoveTarget.actor.connect('destroy', Lang.bind(this,
function() {
this._favRemoveTarget = null;
}));
+ this._adjustIconSize();
}
DND.removeDragMonitor(this._dragMonitor);
},
@@ -412,6 +405,15 @@ Dash.prototype = {
if (this._maxHeight == -1)
return;
+ // Hide actors which are about to be removed to not take
+ // them into account when adjusting the icon size ...
+ let hidingChildren = children.filter(function(actor) {
+ return actor._delegate.animatingOut;
+ });
+
+ for (let i = 0; i < hidingChildren.length; i++)
+ hidingChildren[i].hide();
+
let iconChildren = children.filter(function(actor) {
return actor.visible &&
actor._delegate.child &&
@@ -419,11 +421,15 @@ Dash.prototype = {
actor._delegate.child._delegate.icon;
});
+
// Compute the amount of extra space (or missing space) we have
// per icon with the current icon size
let [minHeight, natHeight] = this.actor.get_preferred_height(-1);
let diff = (this._maxHeight - natHeight) / iconChildren.length;
+ for (let i = 0; i < hidingChildren.length; i++)
+ hidingChildren[i].show();
+
let iconSizes = [ 16, 22, 24, 32, 48, 64 ];
let newIconSize = 16;
@@ -566,20 +572,18 @@ Dash.prototype = {
this._box.insert_actor(addedItems[i].item.actor,
addedItems[i].pos);
- // Hide removed actors to not take them into account
- // when adjusting the icon size ...
- for (let i = 0; i < removedActors.length; i++)
- removedActors[i].hide();
+ for (let i = 0; i < removedActors.length; i++) {
+ let item = removedActors[i]._delegate;
- // ... and do the same for the remove target if necessary
- if (this._favRemoveTarget && this._favRemoveTarget.hiding)
- this._favRemoveTarget.actor.hide();
+ // Don't animate item removal when the overview is hidden
+ if (Main.overview.visible)
+ item.animateOutAndDestroy();
+ else
+ item.actor.destroy();
+ }
this._adjustIconSize();
- if (this._favRemoveTarget && this._favRemoveTarget.hiding)
- this._favRemoveTarget.actor.show();
-
// Skip animations on first run when adding the initial set
// of items, to avoid all items zooming in at once
if (!this._shownInitially) {
@@ -587,17 +591,6 @@ Dash.prototype = {
return;
}
- for (let i = 0; i < removedActors.length; i++) {
- removedActors[i].show();
- let item = removedActors[i]._delegate;
-
- // Don't animate item removal when the overview is hidden
- if (Main.overview.visible)
- item.animateOutAndDestroy();
- else
- item.actor.destroy();
- }
-
// Don't animate item addition when the overview is hidden
if (!Main.overview.visible)
return;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]