screenShield: Connect to the actor's show signal instead of using BEFORE_REDRAW

This should make sure that we grab at the right time while at the same time
not break focus handling.

https://bugzilla.gnome.org/show_bug.cgi?id=684650
This commit is contained in:
Adel Gadllah 2012-09-25 21:11:10 +02:00 committed by Ray Strode
parent a0e0cc1038
commit bdeb7d86b6

View File

@ -579,13 +579,14 @@ const ScreenShield = new Lang.Class({
showDialog: function() {
// Ensure that the stage window is mapped, before taking a grab
// otherwise X errors out
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
let actorShownId = 0;
actorShownId = this.actor.connect('show', Lang.bind(this, function() {
if (!this._isModal) {
Main.pushModal(this.actor);
this._isModal = true;
}
return false;
this.actor.disconnect(actorShownId);
}));
this.actor.show();