altTab: make thumbnails scroll to right if needed at first Alt+Shift+Above_Tab

Force an allocation at thumbnails creation so we can figure out whether we
need to scroll when selecting.

We also need to show() the whole AltTabPopup before calling _select() so that,
when computing the scrolling offset, the widgets already have their styles
loaded. Otherwise we will miss the switcher list item container's spacing.

https://bugzilla.gnome.org/show_bug.cgi?id=655069
This commit is contained in:
Rui Matos 2011-07-21 18:58:43 +01:00
parent 49259b3d19
commit 28bb0c1fb2

View File

@ -147,6 +147,8 @@ AltTabPopup.prototype = {
// Need to force an allocation so we can figure out whether we // Need to force an allocation so we can figure out whether we
// need to scroll when selecting // need to scroll when selecting
this.actor.opacity = 0;
this.actor.show();
this.actor.get_allocation_box(); this.actor.get_allocation_box();
// Make the initial selection // Make the initial selection
@ -186,7 +188,7 @@ AltTabPopup.prototype = {
// disturbed by the popup briefly flashing. // disturbed by the popup briefly flashing.
this._initialDelayTimeoutId = Mainloop.timeout_add(POPUP_DELAY_TIMEOUT, this._initialDelayTimeoutId = Mainloop.timeout_add(POPUP_DELAY_TIMEOUT,
Lang.bind(this, function () { Lang.bind(this, function () {
this.actor.show(); this.actor.opacity = 255;
this._initialDelayTimeoutId = 0; this._initialDelayTimeoutId = 0;
})); }));
@ -479,6 +481,10 @@ AltTabPopup.prototype = {
this.actor.add_actor(this._thumbnails.actor); this.actor.add_actor(this._thumbnails.actor);
// Need to force an allocation so we can figure out whether we
// need to scroll when selecting
this._thumbnails.actor.get_allocation_box();
this._thumbnails.actor.opacity = 0; this._thumbnails.actor.opacity = 0;
Tweener.addTween(this._thumbnails.actor, Tweener.addTween(this._thumbnails.actor,
{ opacity: 255, { opacity: 255,