Panel: move the _panelContainer down to PanelMenu

Panel already forces each item to be a PanelMenu.Button, so it's better
to have the latter handle the bin container too, instead of attaching
a private property that might collide with internal usage by the indicator.

https://bugzilla.gnome.org/show_bug.cgi?id=683156
This commit is contained in:
Giovanni Campagna 2012-09-04 18:27:50 +02:00
parent 3f5edf7c3e
commit 7c244b01c6
2 changed files with 7 additions and 9 deletions

View File

@ -1174,7 +1174,7 @@ const Panel = new Lang.Class({
let indicator = this.statusArea[role];
if (!indicator)
continue;
indicator._panelContainer.hide();
indicator.container.hide();
}
},
@ -1206,18 +1206,12 @@ const Panel = new Lang.Class({
},
_addToPanelBox: function(role, indicator, position, box) {
let container = indicator._panelContainer;
if (!container) {
container = new St.Bin({ y_fill: true,
child: indicator.actor });
indicator._panelContainer = container;
}
let container = indicator.container;
container.show();
let parent = container.get_parent();
if (parent) {
if (parent)
parent.remove_actor(container);
}
box.insert_child_at_index(container, position);
if (indicator.menu)

View File

@ -21,6 +21,10 @@ const ButtonBox = new Lang.Class({
this.actor = new Shell.GenericContainer(params);
this.actor._delegate = this;
this.container = new St.Bin({ y_fill: true,
x_fill: true,
child: this.actor });
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
this.actor.connect('allocate', Lang.bind(this, this._allocate));