layout: Allow adding already parented actors for chrome tracking

let trackChrome accept actors that are not children of chrome actors.
this will be useful for the MetaCloseDialog in gnome-shell, which
is already included in the MetaWindowGroup, but needs to be tracked
as chrome for the dialog to receive pointer events on X11.

https://bugzilla.gnome.org/show_bug.cgi?id=762083
This commit is contained in:
Carlos Garnacho 2017-07-14 22:23:53 +02:00 committed by Florian Müllner
parent 516d19eb39
commit 74bd009c86

View File

@ -769,8 +769,7 @@ const LayoutManager = new Lang.Class({
// @actor: a descendant of the chrome to begin tracking // @actor: a descendant of the chrome to begin tracking
// @params: parameters describing how to track @actor // @params: parameters describing how to track @actor
// //
// Tells the chrome to track @actor, which must be a descendant // Tells the chrome to track @actor. This can be used to extend the
// of an actor added via addChrome(). This can be used to extend the
// struts or input region to cover specific children. // struts or input region to cover specific children.
// //
// @params can have any of the same values as in addChrome(), // @params can have any of the same values as in addChrome(),
@ -783,10 +782,9 @@ const LayoutManager = new Lang.Class({
ancestor = ancestor.get_parent(); ancestor = ancestor.get_parent();
index = this._findActor(ancestor); index = this._findActor(ancestor);
} }
if (!ancestor)
throw new Error('actor is not a descendent of a chrome actor');
let ancestorData = this._trackedActors[index]; let ancestorData = ancestor ? this._trackedActors[index]
: defaultParams;
if (!params) if (!params)
params = {}; params = {};
// We can't use Params.parse here because we want to drop // We can't use Params.parse here because we want to drop