modalDialog: Always use a stack for the background
Currently a system modal dialog's actor hierarchy depends on whether events should be blocked while the dialog is shown or not. Change it to always contain a stack, to allow subclasses to add additional background elements. https://bugzilla.gnome.org/show_bug.cgi?id=694912
This commit is contained in:
parent
11d997c42b
commit
e98eb57e3e
@ -65,7 +65,9 @@ const ModalDialog = new Lang.Class({
|
|||||||
this._group.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
|
this._group.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
|
||||||
this._group.connect('key-release-event', Lang.bind(this, this._onKeyReleaseEvent));
|
this._group.connect('key-release-event', Lang.bind(this, this._onKeyReleaseEvent));
|
||||||
|
|
||||||
this._backgroundBin = new St.Bin();
|
this.backgroundStack = new Shell.Stack();
|
||||||
|
this._backgroundBin = new St.Bin({ child: this.backgroundStack,
|
||||||
|
x_fill: true, y_fill: true });
|
||||||
this._monitorConstraint = new Layout.MonitorConstraint();
|
this._monitorConstraint = new Layout.MonitorConstraint();
|
||||||
this._backgroundBin.add_constraint(this._monitorConstraint);
|
this._backgroundBin.add_constraint(this._monitorConstraint);
|
||||||
this._group.add_actor(this._backgroundBin);
|
this._group.add_actor(this._backgroundBin);
|
||||||
@ -81,15 +83,10 @@ const ModalDialog = new Lang.Class({
|
|||||||
{ inhibitEvents: true });
|
{ inhibitEvents: true });
|
||||||
this._lightbox.highlight(this._backgroundBin);
|
this._lightbox.highlight(this._backgroundBin);
|
||||||
|
|
||||||
let stack = new Shell.Stack();
|
|
||||||
this._backgroundBin.child = stack;
|
|
||||||
|
|
||||||
this._eventBlocker = new Clutter.Actor({ reactive: true });
|
this._eventBlocker = new Clutter.Actor({ reactive: true });
|
||||||
stack.add_actor(this._eventBlocker);
|
this.backgroundStack.add_actor(this._eventBlocker);
|
||||||
stack.add_actor(this.dialogLayout);
|
|
||||||
} else {
|
|
||||||
this._backgroundBin.child = this.dialogLayout;
|
|
||||||
}
|
}
|
||||||
|
this.backgroundStack.add_actor(this.dialogLayout);
|
||||||
|
|
||||||
|
|
||||||
this.contentLayout = new St.BoxLayout({ vertical: true });
|
this.contentLayout = new St.BoxLayout({ vertical: true });
|
||||||
|
Loading…
Reference in New Issue
Block a user