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
This commit is contained in:
parent
9f436ce373
commit
52cbc299a7
@ -1519,7 +1519,7 @@ var Workspace = new Lang.Class({
|
|||||||
if (metaWin.is_attached_dialog()) {
|
if (metaWin.is_attached_dialog()) {
|
||||||
let parent = metaWin.get_transient_for();
|
let parent = metaWin.get_transient_for();
|
||||||
while (parent.is_attached_dialog())
|
while (parent.is_attached_dialog())
|
||||||
parent = metaWin.get_transient_for();
|
parent = parent.get_transient_for();
|
||||||
|
|
||||||
let idx = this._lookupIndex (parent);
|
let idx = this._lookupIndex (parent);
|
||||||
if (idx < 0) {
|
if (idx < 0) {
|
||||||
|
@ -416,7 +416,7 @@ var WorkspaceThumbnail = new Lang.Class({
|
|||||||
} else if (metaWin.is_attached_dialog()) {
|
} else if (metaWin.is_attached_dialog()) {
|
||||||
let parent = metaWin.get_transient_for();
|
let parent = metaWin.get_transient_for();
|
||||||
while (parent.is_attached_dialog())
|
while (parent.is_attached_dialog())
|
||||||
parent = metaWin.get_transient_for();
|
parent = parent.get_transient_for();
|
||||||
|
|
||||||
let idx = this._lookupIndex (parent);
|
let idx = this._lookupIndex (parent);
|
||||||
if (idx < 0) {
|
if (idx < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user