layout: Move tray-specific event filtration to the user of PressureBarrier
For the HotCorner, we want to have different logic for tossing out specific events based on the grabbed state, etc. so make us have to pass in an event filter callback.
This commit is contained in:
parent
df848aa084
commit
337d2da38a
@ -446,11 +446,22 @@ const LayoutManager = new Lang.Class({
|
|||||||
MESSAGE_TRAY_PRESSURE_TIMEOUT,
|
MESSAGE_TRAY_PRESSURE_TIMEOUT,
|
||||||
Shell.KeyBindingMode.NORMAL |
|
Shell.KeyBindingMode.NORMAL |
|
||||||
Shell.KeyBindingMode.OVERVIEW);
|
Shell.KeyBindingMode.OVERVIEW);
|
||||||
|
this._trayPressure.setEventFilter(this._trayBarrierEventFilter);
|
||||||
this._trayPressure.connect('trigger', function(barrier) {
|
this._trayPressure.connect('trigger', function(barrier) {
|
||||||
Main.messageTray.openTray();
|
Main.messageTray.openTray();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_trayBarrierEventFilter: function(event) {
|
||||||
|
// Throw out all events where the pointer was grabbed by another
|
||||||
|
// client, as the client that grabbed the pointer expects to have
|
||||||
|
// complete control over it
|
||||||
|
if (event.grabbed && Main.modalCount == 0)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
_monitorsChanged: function() {
|
_monitorsChanged: function() {
|
||||||
this._updateMonitors();
|
this._updateMonitors();
|
||||||
this._updateBoxes();
|
this._updateBoxes();
|
||||||
@ -1268,6 +1279,7 @@ const PressureBarrier = new Lang.Class({
|
|||||||
this._timeout = timeout;
|
this._timeout = timeout;
|
||||||
this._keybindingMode = keybindingMode;
|
this._keybindingMode = keybindingMode;
|
||||||
this._orientation = (barrier.y1 == barrier.y2) ? Clutter.Orientation.HORIZONTAL : Clutter.Orientation.VERTICAL;
|
this._orientation = (barrier.y1 == barrier.y2) ? Clutter.Orientation.HORIZONTAL : Clutter.Orientation.VERTICAL;
|
||||||
|
this._eventFilter = null;
|
||||||
|
|
||||||
this._isTriggered = false;
|
this._isTriggered = false;
|
||||||
this._reset();
|
this._reset();
|
||||||
@ -1282,6 +1294,10 @@ const PressureBarrier = new Lang.Class({
|
|||||||
this._barrier = null;
|
this._barrier = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setEventFilter: function(filter) {
|
||||||
|
this._eventFilter = filter;
|
||||||
|
},
|
||||||
|
|
||||||
_reset: function() {
|
_reset: function() {
|
||||||
this._barrierEvents = [];
|
this._barrierEvents = [];
|
||||||
this._currentPressure = 0;
|
this._currentPressure = 0;
|
||||||
@ -1343,10 +1359,7 @@ const PressureBarrier = new Lang.Class({
|
|||||||
if (this._isTriggered)
|
if (this._isTriggered)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Throw out all events where the pointer was grabbed by another
|
if (this._eventFilter && this._eventFilter(event))
|
||||||
// client, as the client that grabbed the pointer expects to have
|
|
||||||
// complete control over it
|
|
||||||
if (event.grabbed && Main.modalCount == 0)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Throw out all events not in the proper keybinding mode
|
// Throw out all events not in the proper keybinding mode
|
||||||
|
Loading…
Reference in New Issue
Block a user