[gnome-shell] windowAttentionHandler: Handle XUrgencyHint as well



commit 284978757ee6b13dc9678700e2b1972507dbaaa5
Author: Florian Müllner <fmuellner gnome org>
Date:   Fri Jul 13 19:16:14 2018 +0200

    windowAttentionHandler: Handle XUrgencyHint as well
    
    While it's not commonly used, it is easy enough to handle it the
    same as the demands-attention hint, so do just that.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=643595

 js/ui/windowAttentionHandler.js | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/windowAttentionHandler.js b/js/ui/windowAttentionHandler.js
index 524e47c0f..a8c688ef3 100644
--- a/js/ui/windowAttentionHandler.js
+++ b/js/ui/windowAttentionHandler.js
@@ -13,6 +13,8 @@ var WindowAttentionHandler = new Lang.Class({
         this._tracker = Shell.WindowTracker.get_default();
         this._windowDemandsAttentionId = global.display.connect('window-demands-attention',
                                                                 this._onWindowDemandsAttention.bind(this));
+        this._windowMarkedUrgentId = global.display.connect('window-marked-urgent',
+                                                                this._onWindowDemandsAttention.bind(this));
     },
 
     _getTitleAndBanner(app, window) {
@@ -66,7 +68,9 @@ var Source = new Lang.Class({
 
         this.signalIDs = [];
         this.signalIDs.push(this._window.connect('notify::demands-attention',
-                                                 () => { this.destroy(); }));
+                                                 this._sync.bind(this));
+        this.signalIDs.push(this._window.connect('notify::urgent',
+                                                 this._sync.bind(this));
         this.signalIDs.push(this._window.connect('focus',
                                                  () => { this.destroy(); }));
         this.signalIDs.push(this._window.connect('unmanaged',
@@ -75,6 +79,12 @@ var Source = new Lang.Class({
         this.connect('destroy', this._onDestroy.bind(this));
     },
 
+    _sync() {
+        if (this._window.demands_attention || this._window.urgent)
+            return;
+        this.destroy();
+    },
+
     _onDestroy() {
         for(let i = 0; i < this.signalIDs.length; i++) {
            this._window.disconnect(this.signalIDs[i]);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]