messageTray: Fix a stuck grab related to bubble notifications
If the user middle clicks on a summary item in the tray, we'll try to grab null instead of an actor, which is wrong. https://bugzilla.gnome.org/show_bug.cgi?id=700854
This commit is contained in:
parent
907f02cd28
commit
991ed2da72
@ -2633,28 +2633,35 @@ const MessageTray = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_showSummaryBoxPointer: function() {
|
_showSummaryBoxPointer: function() {
|
||||||
this._summaryBoxPointerItem = this._clickedSummaryItem;
|
let child;
|
||||||
|
let summaryItem = this._clickedSummaryItem;
|
||||||
|
if (this._clickedSummaryItemMouseButton == 1) {
|
||||||
|
// Acknowledge all our notifications
|
||||||
|
summaryItem.source.notifications.forEach(function(n) { n.acknowledged = true; });
|
||||||
|
|
||||||
|
child = summaryItem.notificationStackWidget;
|
||||||
|
|
||||||
|
let closeButton = summaryItem.closeButton;
|
||||||
|
closeButton.show();
|
||||||
|
this._summaryBoxPointerCloseClickedId = closeButton.connect('clicked', Lang.bind(this, this._hideSummaryBoxPointer));
|
||||||
|
summaryItem.prepareNotificationStackForShowing();
|
||||||
|
} else if (this._clickedSummaryItemMouseButton == 3) {
|
||||||
|
child = summaryItem.rightClickMenu;
|
||||||
|
this._summaryBoxPointerCloseClickedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the user clicked the middle mouse button, or the item
|
||||||
|
// doesn't have a right-click menu, do nothing.
|
||||||
|
if (!child)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._summaryBoxPointerItem = summaryItem;
|
||||||
this._summaryBoxPointerContentUpdatedId = this._summaryBoxPointerItem.connect('content-updated',
|
this._summaryBoxPointerContentUpdatedId = this._summaryBoxPointerItem.connect('content-updated',
|
||||||
Lang.bind(this, this._onSummaryBoxPointerContentUpdated));
|
Lang.bind(this, this._onSummaryBoxPointerContentUpdated));
|
||||||
this._sourceDoneDisplayingId = this._summaryBoxPointerItem.source.connect('done-displaying-content',
|
this._sourceDoneDisplayingId = this._summaryBoxPointerItem.source.connect('done-displaying-content',
|
||||||
Lang.bind(this, this._onSourceDoneDisplayingContent));
|
Lang.bind(this, this._onSourceDoneDisplayingContent));
|
||||||
|
|
||||||
let hasRightClickMenu = this._summaryBoxPointerItem.rightClickMenu != null;
|
this._summaryBoxPointer.bin.child = child;
|
||||||
if (this._clickedSummaryItemMouseButton == 1 || !hasRightClickMenu) {
|
|
||||||
// Acknowledge all our notifications
|
|
||||||
this._summaryBoxPointerItem.source.notifications.forEach(function(n) { n.acknowledged = true; });
|
|
||||||
|
|
||||||
this._summaryBoxPointer.bin.child = this._summaryBoxPointerItem.notificationStackWidget;
|
|
||||||
|
|
||||||
let closeButton = this._summaryBoxPointerItem.closeButton;
|
|
||||||
closeButton.show();
|
|
||||||
this._summaryBoxPointerCloseClickedId = closeButton.connect('clicked', Lang.bind(this, this._hideSummaryBoxPointer));
|
|
||||||
this._summaryBoxPointerItem.prepareNotificationStackForShowing();
|
|
||||||
} else if (this._clickedSummaryItemMouseButton == 3) {
|
|
||||||
this._summaryBoxPointer.bin.child = this._clickedSummaryItem.rightClickMenu;
|
|
||||||
this._summaryBoxPointerCloseClickedId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._grabHelper.grab({ actor: this._summaryBoxPointer.bin.child,
|
this._grabHelper.grab({ actor: this._summaryBoxPointer.bin.child,
|
||||||
modal: true,
|
modal: true,
|
||||||
onUngrab: Lang.bind(this, this._onSummaryBoxPointerUngrabbed) });
|
onUngrab: Lang.bind(this, this._onSummaryBoxPointerUngrabbed) });
|
||||||
|
Loading…
Reference in New Issue
Block a user