[gnome-shell] workspace: Fix infinite loop when finding parent window of dialogs



commit 52cbc299a795b4573a7558982115354cfa7a4e61
Author: verdre <gitlab v0yd nl>
Date:   Mon Jul 23 14:22:34 2018 +0200

    workspace: Fix infinite loop when finding parent window of dialogs
    
    When a dialog is added to a window while the overview is shown, we get
    its parent using get_transient_for() so we can add it to the right
    window clone.
    
    If we have multiple layers of dialogs we have to do this recursively
    until we find the root ancestor. This case currently results in an
    infinite loop: Since parent is always set to the same window, the
    while-condition will always be true.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/180

 js/ui/workspace.js          | 2 +-
 js/ui/workspaceThumbnail.js | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
---
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index a183e0749..6a8e92447 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -1519,7 +1519,7 @@ var Workspace = new Lang.Class({
             if (metaWin.is_attached_dialog()) {
                 let parent = metaWin.get_transient_for();
                 while (parent.is_attached_dialog())
-                    parent = metaWin.get_transient_for();
+                    parent = parent.get_transient_for();
 
                 let idx = this._lookupIndex (parent);
                 if (idx < 0) {
diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js
index b1fa587fe..cf21e1317 100644
--- a/js/ui/workspaceThumbnail.js
+++ b/js/ui/workspaceThumbnail.js
@@ -416,7 +416,7 @@ var WorkspaceThumbnail = new Lang.Class({
         } else if (metaWin.is_attached_dialog()) {
             let parent = metaWin.get_transient_for();
             while (parent.is_attached_dialog())
-                parent = metaWin.get_transient_for();
+                parent = parent.get_transient_for();
 
             let idx = this._lookupIndex (parent);
             if (idx < 0) {


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