dateMenu: Block notification banners while the calendar is open
The new banner position interferes with the calendar drop-down. Resolve this by blocking banners while the calendar is shown. https://bugzilla.gnome.org/show_bug.cgi?id=744850
This commit is contained in:
parent
f6c84d6185
commit
8032e672e9
@ -358,13 +358,15 @@ const DateMenuButton = new Lang.Class({
|
|||||||
this._messageList.setDate(date);
|
this._messageList.setDate(date);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Whenever the menu is opened, select today
|
|
||||||
this.menu.connect('open-state-changed', Lang.bind(this, function(menu, isOpen) {
|
this.menu.connect('open-state-changed', Lang.bind(this, function(menu, isOpen) {
|
||||||
|
// Whenever the menu is opened, select today
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
let now = new Date();
|
let now = new Date();
|
||||||
this._calendar.setDate(now);
|
this._calendar.setDate(now);
|
||||||
this._date.setDate(now);
|
this._date.setDate(now);
|
||||||
}
|
}
|
||||||
|
// Block notification banners while the menu is open
|
||||||
|
Main.messageTray.bannerBlocked = isOpen;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Fill up the first column
|
// Fill up the first column
|
||||||
|
@ -1365,6 +1365,7 @@ const MessageTray = new Lang.Class({
|
|||||||
this._onStatusChanged(proxy.status);
|
this._onStatusChanged(proxy.status);
|
||||||
}));
|
}));
|
||||||
this._busy = false;
|
this._busy = false;
|
||||||
|
this._bannerBlocked = false;
|
||||||
this._presence.connectSignal('StatusChanged', Lang.bind(this, function(proxy, senderName, [status]) {
|
this._presence.connectSignal('StatusChanged', Lang.bind(this, function(proxy, senderName, [status]) {
|
||||||
this._onStatusChanged(status);
|
this._onStatusChanged(status);
|
||||||
}));
|
}));
|
||||||
@ -1478,6 +1479,13 @@ const MessageTray = new Lang.Class({
|
|||||||
return this._notificationQueue.length;
|
return this._notificationQueue.length;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
set bannerBlocked(v) {
|
||||||
|
if (this._bannerBlocked == v)
|
||||||
|
return;
|
||||||
|
this._bannerBlocked = v;
|
||||||
|
this._updateState();
|
||||||
|
},
|
||||||
|
|
||||||
contains: function(source) {
|
contains: function(source) {
|
||||||
return this._sources.has(source);
|
return this._sources.has(source);
|
||||||
},
|
},
|
||||||
@ -1688,6 +1696,10 @@ const MessageTray = new Lang.Class({
|
|||||||
// _updateState() figures out what (if anything) needs to be done
|
// _updateState() figures out what (if anything) needs to be done
|
||||||
// at the present time.
|
// at the present time.
|
||||||
_updateState: function() {
|
_updateState: function() {
|
||||||
|
this.actor.visible = !this._bannerBlocked;
|
||||||
|
if (this._bannerBlocked)
|
||||||
|
return;
|
||||||
|
|
||||||
// If our state changes caused _updateState to be called,
|
// If our state changes caused _updateState to be called,
|
||||||
// just exit now to prevent reentrancy issues.
|
// just exit now to prevent reentrancy issues.
|
||||||
if (this._updatingState)
|
if (this._updatingState)
|
||||||
|
Loading…
Reference in New Issue
Block a user