popupMenu: Connect after to item 'activate' signal
A menu item activation might lead to a call to `itemActivated` which eventually
will close the menu which leads to a `PopupMenu.removeAll` that destroys all the
items, stopping the emission of the 'activate' signal for them.
Before commit 4258ae3e
this was not happening because destroy'ing a javascript
object wasn't really disposing it and thus stopping the signal emissions.
So, ensure that `itemActivated` is called after that all the other callbacks
have been consumed, and so that the menu is closed as last thing.
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1326
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/557
This commit is contained in:
parent
de0e21612c
commit
759120b95f
@ -572,7 +572,7 @@ var PopupMenuBase = class {
|
|||||||
menuItem.actor.grab_key_focus();
|
menuItem.actor.grab_key_focus();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
menuItem._activateId = menuItem.connect('activate', (menuItem, event) => {
|
menuItem._activateId = menuItem.connect_after('activate', (menuItem, event) => {
|
||||||
this.emit('activate', menuItem);
|
this.emit('activate', menuItem);
|
||||||
this.itemActivated(BoxPointer.PopupAnimation.FULL);
|
this.itemActivated(BoxPointer.PopupAnimation.FULL);
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user