grabHelper: Fix regression for dwelling with mouse down
b203a95a78
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
This commit is contained in:
parent
449d116af2
commit
2acb097662
@ -148,31 +148,32 @@ const GrabHelper = new Lang.Class({
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
params.savedFocus = focus;
|
params.savedFocus = focus;
|
||||||
this._grabStack.push(params);
|
|
||||||
|
|
||||||
if (params.modal)
|
if (params.modal && !this._takeModalGrab())
|
||||||
this._takeModalGrab();
|
return false;
|
||||||
|
|
||||||
if (params.grabFocus)
|
if (params.grabFocus && !this._takeFocusGrab(hadFocus))
|
||||||
this._takeFocusGrab(hadFocus);
|
return false;
|
||||||
|
|
||||||
if (hadFocus || params.grabFocus)
|
if (hadFocus || params.grabFocus)
|
||||||
_navigateActor(newFocus);
|
_navigateActor(newFocus);
|
||||||
|
|
||||||
|
this._grabStack.push(params);
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
_takeModalGrab: function() {
|
_takeModalGrab: function() {
|
||||||
let firstGrab = (this._modalCount == 0);
|
let firstGrab = (this._modalCount == 0);
|
||||||
|
if (firstGrab) {
|
||||||
|
if (!Main.pushModal(this._owner))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
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++;
|
this._modalCount++;
|
||||||
if (!firstGrab)
|
return true;
|
||||||
return;
|
|
||||||
|
|
||||||
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));
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_releaseModalGrab: function() {
|
_releaseModalGrab: function() {
|
||||||
@ -196,23 +197,24 @@ const GrabHelper = new Lang.Class({
|
|||||||
|
|
||||||
_takeFocusGrab: function(hadFocus) {
|
_takeFocusGrab: function(hadFocus) {
|
||||||
let firstGrab = (this._grabFocusCount == 0);
|
let firstGrab = (this._grabFocusCount == 0);
|
||||||
this._grabFocusCount++;
|
if (firstGrab) {
|
||||||
if (!firstGrab)
|
let metaDisplay = global.screen.get_display();
|
||||||
return;
|
|
||||||
|
|
||||||
let metaDisplay = global.screen.get_display();
|
this._grabbedFromKeynav = hadFocus;
|
||||||
|
this._preGrabInputMode = global.stage_input_mode;
|
||||||
|
this._prevFocusedWindow = metaDisplay.focus_window;
|
||||||
|
|
||||||
this._grabbedFromKeynav = hadFocus;
|
if (this._preGrabInputMode == Shell.StageInputMode.NONREACTIVE ||
|
||||||
this._preGrabInputMode = global.stage_input_mode;
|
this._preGrabInputMode == Shell.StageInputMode.NORMAL) {
|
||||||
this._prevFocusedWindow = metaDisplay.focus_window;
|
global.set_stage_input_mode(Shell.StageInputMode.FOCUSED);
|
||||||
|
}
|
||||||
|
|
||||||
if (this._preGrabInputMode == Shell.StageInputMode.NONREACTIVE ||
|
this._keyFocusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged));
|
||||||
this._preGrabInputMode == Shell.StageInputMode.NORMAL) {
|
this._focusWindowChangedId = metaDisplay.connect('notify::focus-window', Lang.bind(this, this._focusWindowChanged));
|
||||||
global.set_stage_input_mode(Shell.StageInputMode.FOCUSED);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this._keyFocusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged));
|
this._grabFocusCount++;
|
||||||
this._focusWindowChangedId = metaDisplay.connect('notify::focus-window', Lang.bind(this, this._focusWindowChanged));
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
_releaseFocusGrab: function() {
|
_releaseFocusGrab: function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user