sessionList: always allocate full height
This helps to prevent stuff from jumping around on the login dialog when the session list opens.
This commit is contained in:
parent
9451c04a09
commit
9a0d0d2fd3
@ -117,17 +117,29 @@ const SessionList = new Lang.Class({
|
|||||||
this._itemList = new St.BoxLayout({ style_class: 'login-dialog-session-item-list',
|
this._itemList = new St.BoxLayout({ style_class: 'login-dialog-session-item-list',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
this._scrollView.add_actor(this._itemList);
|
this._scrollView.add_actor(this._itemList);
|
||||||
this._scrollView.hide();
|
this._hideSessions();
|
||||||
this.isOpen = false;
|
this.isOpen = false;
|
||||||
this._populate();
|
this._populate();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_hideSessions: function() {
|
||||||
|
this._itemList.can_focus = false;
|
||||||
|
this._itemList.reactive = false;
|
||||||
|
this._scrollView.opacity = 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
_showSessions: function() {
|
||||||
|
this._scrollView.opacity = 255;
|
||||||
|
this._itemList.reactive = true;
|
||||||
|
this._itemList.can_focus = true;
|
||||||
|
},
|
||||||
|
|
||||||
open: function() {
|
open: function() {
|
||||||
if (this.isOpen)
|
if (this.isOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._button.add_style_pseudo_class('open');
|
this._button.add_style_pseudo_class('open');
|
||||||
this._scrollView.show();
|
this._showSessions();
|
||||||
this._triangle.set_text('\u25BE');
|
this._triangle.set_text('\u25BE');
|
||||||
|
|
||||||
this.isOpen = true;
|
this.isOpen = true;
|
||||||
@ -138,7 +150,7 @@ const SessionList = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
this._button.remove_style_pseudo_class('open');
|
this._button.remove_style_pseudo_class('open');
|
||||||
this._scrollView.hide();
|
this._hideSessions();
|
||||||
this._triangle.set_text('\u25B8');
|
this._triangle.set_text('\u25B8');
|
||||||
|
|
||||||
this.isOpen = false;
|
this.isOpen = false;
|
||||||
@ -202,6 +214,16 @@ const SessionList = new Lang.Class({
|
|||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
this.setActiveSession(item.id);
|
this.setActiveSession(item.id);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
item.actor.can_focus = this._itemList.can_focus;
|
||||||
|
let signalId = this._itemList.connect('notify::can-focus',
|
||||||
|
Lang.bind(this, function() {
|
||||||
|
item.actor.can_focus = this._itemList.can_focus;
|
||||||
|
}));
|
||||||
|
item.actor.connect('destroy',
|
||||||
|
Lang.bind(this, function() {
|
||||||
|
this._itemList.disconnect(signalId);
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user