popupMenu: Respect items' :can-focus property

Menu items use a single 'active' state that follows both hover and
keyboard focus. It therefore makes sense for the active item to always
grab the focus, in particular as an item that is sensitive but not
focusable by keynav would be rather weird.

As it turns out, we do have a case that is weird enough where we want
exactly that, so only grab focus if the actor's :can-focus property
allows it.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/171
This commit is contained in:
Florian Müllner 2018-09-11 17:55:36 +02:00 committed by Florian Müllner
parent 1eb7ba0506
commit 24a26e025b

View File

@ -173,6 +173,7 @@ var PopupBaseMenuItem = class {
this.active = active; this.active = active;
if (active) { if (active) {
this.actor.add_style_class_name('selected'); this.actor.add_style_class_name('selected');
if (this.actor.can_focus)
this.actor.grab_key_focus(); this.actor.grab_key_focus();
} else { } else {
this.actor.remove_style_class_name('selected'); this.actor.remove_style_class_name('selected');