mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-18 07:34:54 +00:00
altTab: Check for reentrancy in override function of _onItemMotion()
Just like in the parent _onItemMotion() function, we should check for
reentrancy in our override.
Because the hover timeout will prevent a new selection from happening
for some time, in addition to checking for this._highlighted reentrancy,
we also need to track the item that's being hovered during the timeout.
(cherry picked from commit 7f65fa49db)
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2181>
This commit is contained in:
parent
887652792f
commit
560f01eb59
1 changed files with 12 additions and 1 deletions
|
|
@ -707,6 +707,7 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
|
|||
}
|
||||
|
||||
this._altTabPopup = altTabPopup;
|
||||
this._delayedHighlighted = -1;
|
||||
this._mouseTimeOutId = 0;
|
||||
|
||||
this.connect('destroy', this._onDestroy.bind(this));
|
||||
|
|
@ -792,16 +793,26 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
|
|||
// We override SwitcherList's _onItemMotion method to delay
|
||||
// activation when the thumbnail list is open
|
||||
_onItemMotion(item) {
|
||||
if (item === this._items[this._highlighted] ||
|
||||
item === this._items[this._delayedHighlighted])
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
const index = this._items.indexOf(item);
|
||||
|
||||
if (this._mouseTimeOutId != 0)
|
||||
if (this._mouseTimeOutId !== 0) {
|
||||
GLib.source_remove(this._mouseTimeOutId);
|
||||
this._delayedHighlighted = -1;
|
||||
this._mouseTimeOutId = 0;
|
||||
}
|
||||
|
||||
if (this._altTabPopup.thumbnailsVisible) {
|
||||
this._delayedHighlighted = index;
|
||||
this._mouseTimeOutId = GLib.timeout_add(
|
||||
GLib.PRIORITY_DEFAULT,
|
||||
APP_ICON_HOVER_TIMEOUT,
|
||||
() => {
|
||||
this._enterItem(index);
|
||||
this._delayedHighlighted = -1;
|
||||
this._mouseTimeOutId = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue