ScreenSheild: make notification view scrollable

Place a maximum height on the notification view, and show scrollbars
if the list of persistent sources would overflow.

https://bugzilla.gnome.org/show_bug.cgi?id=681143
This commit is contained in:
Giovanni Campagna 2012-08-06 19:02:12 +02:00
parent 0b7ca098ad
commit 1d484e2278
2 changed files with 9 additions and 7 deletions

View File

@ -2228,12 +2228,13 @@ StButton.popup-menu-item:insensitive {
} }
#screenShieldNotifications { #screenShieldNotifications {
border-radius: 24px; border-radius: 8px;
background-color: rgba(0.0, 0.0, 0.0, 0.9); background-color: rgba(0.0, 0.0, 0.0, 0.9);
border: 2px solid #868686; border: 2px solid #868686;
max-height: 500px;
} }
#screenShieldNotifications, .screen-shield-notifications-box { .screen-shield-notifications-box {
spacing: 8px; spacing: 8px;
} }

View File

@ -77,17 +77,18 @@ const NotificationsBox = new Lang.Class({
_init: function() { _init: function() {
this.actor = new St.BoxLayout({ vertical: true, this.actor = new St.BoxLayout({ vertical: true,
name: 'screenShieldNotifications', name: 'screenShieldNotifications',
margin_top: 20 style_class: 'screen-shield-notifications-box' });
});
this._residentNotificationBox = new St.BoxLayout({ vertical: true, this._residentNotificationBox = new St.BoxLayout({ vertical: true,
style_class: 'screen-shield-notifications-box' }); style_class: 'screen-shield-notifications-box' });
let scrollView = new St.ScrollView({ x_fill: false, x_align: St.Align.MIDDLE });
this._persistentNotificationBox = new St.BoxLayout({ vertical: true, this._persistentNotificationBox = new St.BoxLayout({ vertical: true,
style_class: 'screen-shield-notifications-box' }); style_class: 'screen-shield-notifications-box' });
scrollView.add_actor(this._persistentNotificationBox);
this.actor.add(this._residentNotificationBox, { x_fill: true }); this.actor.add(this._residentNotificationBox, { x_fill: true });
this.actor.add(this._persistentNotificationBox, { x_fill: false, x_align: St.Align.MIDDLE }); this.actor.add(scrollView, { x_fill: true, x_align: St.Align.MIDDLE });
this._items = []; this._items = [];
Main.messageTray.getSummaryItems().forEach(Lang.bind(this, function(item) { Main.messageTray.getSummaryItems().forEach(Lang.bind(this, function(item) {
@ -172,7 +173,7 @@ const NotificationsBox = new Lang.Class({
this._residentNotificationBox.add(item.notificationStackView); this._residentNotificationBox.add(item.notificationStackView);
} else { } else {
[obj.sourceBox, obj.countLabel] = this._makeNotificationSource(item.source); [obj.sourceBox, obj.countLabel] = this._makeNotificationSource(item.source);
this._persistentNotificationBox.add(obj.sourceBox); this._persistentNotificationBox.add(obj.sourceBox, { x_fill: false, x_align: St.Align.MIDDLE });
} }
obj.contentUpdatedId = item.connect('content-updated', Lang.bind(this, this._onItemContentUpdated)); obj.contentUpdatedId = item.connect('content-updated', Lang.bind(this, this._onItemContentUpdated));