[gnome-shell] messageTray: Fix a stuck grab related to bubble notifications
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] messageTray: Fix a stuck grab related to bubble notifications
- Date: Fri, 24 May 2013 17:29:17 +0000 (UTC)
commit 991ed2da72755e4b3dc670c64ea3800a9e2b13d3
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Wed May 22 13:20:20 2013 -0400
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
js/ui/messageTray.js | 33 ++++++++++++++++++++-------------
1 files changed, 20 insertions(+), 13 deletions(-)
---
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index 68f4e5c..b17053b 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -2633,28 +2633,35 @@ const MessageTray = new Lang.Class({
},
_showSummaryBoxPointer: function() {
- this._summaryBoxPointerItem = this._clickedSummaryItem;
- this._summaryBoxPointerContentUpdatedId = this._summaryBoxPointerItem.connect('content-updated',
- Lang.bind(this,
this._onSummaryBoxPointerContentUpdated));
- this._sourceDoneDisplayingId = this._summaryBoxPointerItem.source.connect('done-displaying-content',
- Lang.bind(this,
this._onSourceDoneDisplayingContent));
-
- let hasRightClickMenu = this._summaryBoxPointerItem.rightClickMenu != null;
- if (this._clickedSummaryItemMouseButton == 1 || !hasRightClickMenu) {
+ let child;
+ let summaryItem = this._clickedSummaryItem;
+ if (this._clickedSummaryItemMouseButton == 1) {
// Acknowledge all our notifications
- this._summaryBoxPointerItem.source.notifications.forEach(function(n) { n.acknowledged = true; });
+ summaryItem.source.notifications.forEach(function(n) { n.acknowledged = true; });
- this._summaryBoxPointer.bin.child = this._summaryBoxPointerItem.notificationStackWidget;
+ child = summaryItem.notificationStackWidget;
- let closeButton = this._summaryBoxPointerItem.closeButton;
+ let closeButton = summaryItem.closeButton;
closeButton.show();
this._summaryBoxPointerCloseClickedId = closeButton.connect('clicked', Lang.bind(this,
this._hideSummaryBoxPointer));
- this._summaryBoxPointerItem.prepareNotificationStackForShowing();
+ summaryItem.prepareNotificationStackForShowing();
} else if (this._clickedSummaryItemMouseButton == 3) {
- this._summaryBoxPointer.bin.child = this._clickedSummaryItem.rightClickMenu;
+ 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',
+ Lang.bind(this,
this._onSummaryBoxPointerContentUpdated));
+ this._sourceDoneDisplayingId = this._summaryBoxPointerItem.source.connect('done-displaying-content',
+ Lang.bind(this,
this._onSourceDoneDisplayingContent));
+
+ this._summaryBoxPointer.bin.child = child;
this._grabHelper.grab({ actor: this._summaryBoxPointer.bin.child,
modal: true,
onUngrab: Lang.bind(this, this._onSummaryBoxPointerUngrabbed) });
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]