[gnome-shell] grabHelper: Fix regression for dwelling with mouse down
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] grabHelper: Fix regression for dwelling with mouse down
- Date: Wed, 19 Sep 2012 11:10:40 +0000 (UTC)
commit 2acb09766269fbf0a4ac2738059ce353b9950fe1
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Tue Sep 18 23:04:57 2012 -0300
grabHelper: Fix regression for dwelling with mouse down
b203a95a786af60257e55881c19b45192a0655b8 introduced a regression
where we forgot to bail out if the pushModal didn't succeed properly.
https://bugzilla.gnome.org/show_bug.cgi?id=684344
js/ui/grabHelper.js | 50 ++++++++++++++++++++++++++------------------------
1 files changed, 26 insertions(+), 24 deletions(-)
---
diff --git a/js/ui/grabHelper.js b/js/ui/grabHelper.js
index 0387b80..fccc2fb 100644
--- a/js/ui/grabHelper.js
+++ b/js/ui/grabHelper.js
@@ -148,31 +148,32 @@ const GrabHelper = new Lang.Class({
return true;
params.savedFocus = focus;
- this._grabStack.push(params);
- if (params.modal)
- this._takeModalGrab();
+ if (params.modal && !this._takeModalGrab())
+ return false;
- if (params.grabFocus)
- this._takeFocusGrab(hadFocus);
+ if (params.grabFocus && !this._takeFocusGrab(hadFocus))
+ return false;
if (hadFocus || params.grabFocus)
_navigateActor(newFocus);
+ this._grabStack.push(params);
return true;
},
_takeModalGrab: function() {
let firstGrab = (this._modalCount == 0);
- this._modalCount++;
- if (!firstGrab)
- return;
+ if (firstGrab) {
+ if (!Main.pushModal(this._owner))
+ return false;
- if (!Main.pushModal(this._owner))
- return;
+ this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent));
+ this._eventId = global.stage.connect('event', Lang.bind(this, this._onEvent));
+ }
- this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent));
- this._eventId = global.stage.connect('event', Lang.bind(this, this._onEvent));
+ this._modalCount++;
+ return true;
},
_releaseModalGrab: function() {
@@ -196,23 +197,24 @@ const GrabHelper = new Lang.Class({
_takeFocusGrab: function(hadFocus) {
let firstGrab = (this._grabFocusCount == 0);
- this._grabFocusCount++;
- if (!firstGrab)
- return;
+ if (firstGrab) {
+ let metaDisplay = global.screen.get_display();
- let metaDisplay = global.screen.get_display();
+ this._grabbedFromKeynav = hadFocus;
+ this._preGrabInputMode = global.stage_input_mode;
+ this._prevFocusedWindow = metaDisplay.focus_window;
- this._grabbedFromKeynav = hadFocus;
- this._preGrabInputMode = global.stage_input_mode;
- this._prevFocusedWindow = metaDisplay.focus_window;
+ if (this._preGrabInputMode == Shell.StageInputMode.NONREACTIVE ||
+ this._preGrabInputMode == Shell.StageInputMode.NORMAL) {
+ global.set_stage_input_mode(Shell.StageInputMode.FOCUSED);
+ }
- if (this._preGrabInputMode == Shell.StageInputMode.NONREACTIVE ||
- this._preGrabInputMode == Shell.StageInputMode.NORMAL) {
- global.set_stage_input_mode(Shell.StageInputMode.FOCUSED);
+ this._keyFocusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged));
+ this._focusWindowChangedId = metaDisplay.connect('notify::focus-window', Lang.bind(this, this._focusWindowChanged));
}
- this._keyFocusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged));
- this._focusWindowChangedId = metaDisplay.connect('notify::focus-window', Lang.bind(this, this._focusWindowChanged));
+ this._grabFocusCount++;
+ return true;
},
_releaseFocusGrab: function() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]