panel: Block banners when opening menus that would overlap

We currently block banners while the time+date menu is open, as it
would obscure the notification. However it is not necessarily the
only menu for which this is the case, so generalize the behavior
to all menus that would overlap banners when open.

https://bugzilla.gnome.org/show_bug.cgi?id=745910
This commit is contained in:
Meet Parikh 2015-04-23 22:13:58 +05:30 committed by Florian Müllner
parent 674325e96c
commit 08690d658f
2 changed files with 19 additions and 2 deletions

View File

@ -357,8 +357,6 @@ const DateMenuButton = new Lang.Class({
this._date.setDate(now); this._date.setDate(now);
this._messageList.setDate(now); this._messageList.setDate(now);
} }
// Block notification banners while the menu is open
Main.messageTray.bannerBlocked = isOpen;
})); }));
// Fill up the first column // Fill up the first column

View File

@ -1003,6 +1003,25 @@ const Panel = new Lang.Class({
if (parent) if (parent)
parent.remove_actor(container); parent.remove_actor(container);
if (indicator._openChangedId > 0)
indicator.menu.disconnect(indicator._openChangedId);
indicator._openChangedId = 0;
if (indicator.menu)
indicator._openChangedId = indicator.menu.connect('open-state-changed',
Lang.bind(this, function(menu, isOpen) {
let boxAlignment;
if (box == this._leftBox)
boxAlignment = Clutter.ActorAlign.START;
else if (box == this._centerBox)
boxAlignment = Clutter.ActorAlign.CENTER;
else if (box == this._rightBox)
boxAlignment = Clutter.ActorAlign.END;
if (boxAlignment == Main.messageTray.bannerAlignment)
Main.messageTray.bannerBlocked = isOpen;
}));
box.insert_child_at_index(container, position); box.insert_child_at_index(container, position);
if (indicator.menu) if (indicator.menu)
this.menuManager.addMenu(indicator.menu); this.menuManager.addMenu(indicator.menu);