dash: Add show/hide methods

https://bugzilla.gnome.org/show_bug.cgi?id=682050
This commit is contained in:
Tanner Doshier 2012-08-16 19:59:07 -05:00 committed by Jasper St. Pierre
parent 6aa8f14285
commit afe8198d4b

View File

@ -372,6 +372,9 @@ const Dash = new Lang.Class({
this._maxHeight = -1; this._maxHeight = -1;
this.iconSize = 64; this.iconSize = 64;
this._shownInitially = false; this._shownInitially = false;
this.visible = false;
this._hiddenX;
this._targetX;
this._dragPlaceholder = null; this._dragPlaceholder = null;
this._dragPlaceholderPos = -1; this._dragPlaceholderPos = -1;
@ -546,6 +549,17 @@ const Dash = new Lang.Class({
} }
}, },
_computeDashX: function() {
this._targetX = this.actor.get_x();
let rtl = (this.actor.get_text_direction() == Clutter.TextDirection.RTL);
if (rtl)
this._hiddenX = this._targetX + this.actor.width;
else
this._hiddenX = -this.actor.width;
},
_adjustIconSize: function() { _adjustIconSize: function() {
// For the icon size, we only consider children which are "proper" // For the icon size, we only consider children which are "proper"
// icons (i.e. ignoring drag placeholders) and which are not // icons (i.e. ignoring drag placeholders) and which are not
@ -641,6 +655,8 @@ const Dash = new Lang.Class({
} }
}); });
} }
this._computeDashX();
}, },
_redisplay: function () { _redisplay: function () {
@ -757,6 +773,7 @@ const Dash = new Lang.Class({
// of items, to avoid all items zooming in at once // of items, to avoid all items zooming in at once
if (!this._shownInitially) { if (!this._shownInitially) {
this._shownInitially = true; this._shownInitially = true;
this.visible = true;
return; return;
} }
@ -901,6 +918,34 @@ const Dash = new Lang.Class({
})); }));
return true; return true;
},
show: function() {
if (this.visible)
return;
this.visible = true;
this.actor.show();
Tweener.addTween(this.actor, { translation_x: this._targetX,
transition: 'easeOutQuad',
time: DASH_ANIMATION_TIME
});
},
hide: function() {
if (!this.visible)
return;
this.visible = false;
Tweener.addTween(this.actor, { translation_x: this._hiddenX,
transition: 'easeOutQuad',
time: DASH_ANIMATION_TIME,
onComplete: Lang.bind(this, function () {
this.actor.hide();
})
});
} }
}); });