PopupMenu: propagate all open-state-changed down to PopupMenuSection
PopupMenuBase relies on open-state-changed to update the separator visibility, but PopupMenuSection were only emitting when the parent closed, so the first time the menu was opened, separator visiblity was wrong. https://bugzilla.gnome.org/show_bug.cgi?id=682998
This commit is contained in:
parent
f075b36d4f
commit
04d1a35cb5
@ -1052,14 +1052,17 @@ const PopupMenuBase = new Lang.Class({
|
||||
|
||||
if (menuItem instanceof PopupMenuSection) {
|
||||
this._connectSubMenuSignals(menuItem, menuItem);
|
||||
menuItem._closingId = this.connect('open-state-changed',
|
||||
menuItem._parentOpenStateChangedId = this.connect('open-state-changed',
|
||||
function(self, open) {
|
||||
if (!open)
|
||||
menuItem.close(BoxPointer.PopupAnimation.FADE);
|
||||
if (open)
|
||||
menuItem.open();
|
||||
else
|
||||
menuItem.close();
|
||||
});
|
||||
menuItem.connect('destroy', Lang.bind(this, function() {
|
||||
menuItem.disconnect(menuItem._subMenuActivateId);
|
||||
menuItem.disconnect(menuItem._subMenuActiveChangeId);
|
||||
this.disconnect(menuItem._parentOpenStateChangedId);
|
||||
|
||||
this.length--;
|
||||
}));
|
||||
@ -1440,7 +1443,7 @@ const PopupMenuSection = new Lang.Class({
|
||||
|
||||
// deliberately ignore any attempt to open() or close(), but emit the
|
||||
// corresponding signal so children can still pick it up
|
||||
open: function(animate) { this.emit('open-state-changed', true); },
|
||||
open: function() { this.emit('open-state-changed', true); },
|
||||
close: function() { this.emit('open-state-changed', false); },
|
||||
|
||||
destroy: function() {
|
||||
|
Loading…
Reference in New Issue
Block a user