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:
parent
817ff52414
commit
e94de67bd2
@ -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;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user