switcherPopup: Ignore implicit enter events when the popup is mapped

If the popup happens to be mapped beneath the pointer, mutter will now
emit an implicit enter notify event (i.e. not caused by pointer motion).
In this case the switcherPopup still goes and selects the item, which
results in too sensitive alt-tab menus if the pointer happens to be in
the wrong place.

Make highlighting rely on motion events instead, so it always involves
user interaction when triggered by the pointer.

https://bugzilla.gnome.org/show_bug.cgi?id=755164
This commit is contained in:
Carlos Garnacho 2017-02-28 13:35:57 +01:00
parent 817ff52414
commit e94de67bd2

View File

@ -385,7 +385,7 @@ const SwitcherList = new Lang.Class({
let n = this._items.length; let n = this._items.length;
bbox.connect('clicked', Lang.bind(this, function() { this._onItemClicked(n); })); bbox.connect('clicked', Lang.bind(this, function() { this._onItemClicked(n); }));
bbox.connect('enter-event', Lang.bind(this, function() { this._onItemEnter(n); })); bbox.connect('motion-event', Lang.bind(this, function() { return this._onItemEnter(n); }));
bbox.label_actor = label; bbox.label_actor = label;
@ -399,7 +399,11 @@ const SwitcherList = new Lang.Class({
}, },
_onItemEnter: function (index) { _onItemEnter: function (index) {
this._itemEntered(index); // Avoid reentrancy
if (index != this._currentItemEntered) {
this._currentItemEntered = index;
this._itemEntered(index);
}
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
}, },