From d56411729b8f41738b6d54a00ebe944f6f85c76f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sat, 21 Feb 2015 09:05:58 +0100 Subject: [PATCH] messageTray: Hide from picks during DND operations As it is impossible to interact with notification banners while a DND operation is ongoing, we can temporarily hide the banner container from picks so that DND works as expected even while a banner is showing. https://bugzilla.gnome.org/show_bug.cgi?id=744912 --- js/ui/messageTray.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 84408f829..f4b4f8876 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1555,6 +1555,25 @@ const MessageTray = new Lang.Class({ Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated)); + Main.overview.connect('window-drag-begin', + Lang.bind(this, this._onDragBegin)); + Main.overview.connect('window-drag-cancelled', + Lang.bind(this, this._onDragEnd)); + Main.overview.connect('window-drag-end', + Lang.bind(this, this._onDragEnd)); + + Main.overview.connect('item-drag-begin', + Lang.bind(this, this._onDragBegin)); + Main.overview.connect('item-drag-cancelled', + Lang.bind(this, this._onDragEnd)); + Main.overview.connect('item-drag-end', + Lang.bind(this, this._onDragEnd)); + + Main.xdndHandler.connect('drag-begin', + Lang.bind(this, this._onDragBegin)); + Main.xdndHandler.connect('drag-end', + Lang.bind(this, this._onDragEnd)); + Main.wm.addKeybinding('focus-active-notification', new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }), Meta.KeyBindingFlags.NONE, @@ -1571,6 +1590,14 @@ const MessageTray = new Lang.Class({ this._updateState(); }, + _onDragBegin: function() { + Shell.util_set_hidden_from_pick(this.actor, true); + }, + + _onDragEnd: function() { + Shell.util_set_hidden_from_pick(this.actor, false); + }, + _onNotificationKeyRelease: function(actor, event) { if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) { this._expireNotification();