From 180000a5317e771a7860419fafa8431295547dd7 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 16 Feb 2013 12:52:37 -0500 Subject: [PATCH] grabHelper: Track the grab before trying to set key focus If we don't this for a nested grabFocus grab, the notify::key-focus will be called, not think that the new key focus is part of the grab, and cancel the full grab. This leaves the grab helper in an inconsistent and confused state, as the grab is pushed onto the grab stack after. https://bugzilla.gnome.org/show_bug.cgi?id=693975 --- js/ui/grabHelper.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/ui/grabHelper.js b/js/ui/grabHelper.js index 058524ae8..e31cc2f18 100644 --- a/js/ui/grabHelper.js +++ b/js/ui/grabHelper.js @@ -167,6 +167,8 @@ const GrabHelper = new Lang.Class({ if (params.grabFocus && !this._takeFocusGrab(hadFocus)) return false; + this._grabStack.push(params); + if (params.focus) { params.focus.grab_key_focus(); } else if (newFocus && (hadFocus || params.grabFocus)) { @@ -177,7 +179,6 @@ const GrabHelper = new Lang.Class({ if ((params.grabFocus || params.modal) && !this._capturedEventId) this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent)); - this._grabStack.push(params); return true; },