[gnome-shell] MessageTray: keep notification focused through update()



commit 8fdbbe78f4b84bb8bc72df91465641ba6c7c9921
Author: Dan Winship <danw gnome org>
Date:   Wed Mar 2 09:48:29 2011 -0500

    MessageTray: keep notification focused through update()
    
    If a notification was updated while one of its widgets was focused,
    it would lose the grab when that widget was destroyed. Fix that by
    moving the focus to a safe place before destroying the old widgets.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=643687

 js/ui/messageTray.js |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index a281039..f951801 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -467,17 +467,25 @@ Notification.prototype = {
 
         this._customContent = params.customContent;
 
+        let oldFocus = global.stage.key_focus;
+
         if (this._icon)
             this._icon.destroy();
         // We always clear the content area if we don't have custom
         // content because it might contain the @banner that didn't
         // fit in the banner mode.
         if (this._scrollArea && (!this._customContent || params.clear)) {
+            if (oldFocus && this._scrollArea.contains(oldFocus))
+                this.actor.grab_key_focus();
+
             this._scrollArea.destroy();
             this._scrollArea = null;
             this._contentArea = null;
         }
         if (this._actionArea && params.clear) {
+            if (oldFocus && this._actionArea.contains(oldFocus))
+                this.actor.grab_key_focus();
+
             this._actionArea.destroy();
             this._actionArea = null;
             this._buttonBox = null;



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