St: don't attempt to give focus to non reactive actors
Non reactive actors don't expect to be interacted with, and thus should not get keyboard focus. https://bugzilla.gnome.org/show_bug.cgi?id=619955
This commit is contained in:
parent
a29507e452
commit
26d3b1929e
@ -165,7 +165,6 @@ const NetworkSecretDialog = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._okButton.button.reactive = valid;
|
this._okButton.button.reactive = valid;
|
||||||
this._okButton.button.can_focus = valid;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onOk: function() {
|
_onOk: function() {
|
||||||
|
@ -134,7 +134,6 @@ const PopupBaseMenuItem = new Lang.Class({
|
|||||||
|
|
||||||
this.sensitive = sensitive;
|
this.sensitive = sensitive;
|
||||||
this.actor.reactive = sensitive;
|
this.actor.reactive = sensitive;
|
||||||
this.actor.can_focus = sensitive;
|
|
||||||
|
|
||||||
if (sensitive)
|
if (sensitive)
|
||||||
this.actor.remove_style_pseudo_class('insensitive');
|
this.actor.remove_style_pseudo_class('insensitive');
|
||||||
@ -773,12 +772,10 @@ const PopupSwitchMenuItem = new Lang.Class({
|
|||||||
this._statusLabel.text = text;
|
this._statusLabel.text = text;
|
||||||
this._statusBin.child = this._statusLabel;
|
this._statusBin.child = this._statusLabel;
|
||||||
this.actor.reactive = false;
|
this.actor.reactive = false;
|
||||||
this.actor.can_focus = false;
|
|
||||||
this.actor.accessible_role = Atk.Role.MENU_ITEM;
|
this.actor.accessible_role = Atk.Role.MENU_ITEM;
|
||||||
} else {
|
} else {
|
||||||
this._statusBin.child = this._switch.actor;
|
this._statusBin.child = this._switch.actor;
|
||||||
this.actor.reactive = true;
|
this.actor.reactive = true;
|
||||||
this.actor.can_focus = true;
|
|
||||||
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
|
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
|
||||||
}
|
}
|
||||||
this.checkAccessibleState();
|
this.checkAccessibleState();
|
||||||
@ -1891,7 +1888,7 @@ const RemoteMenu = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
item.actor.reactive = item.actor.can_focus = action.enabled;
|
item.actor.reactive = action.enabled;
|
||||||
if (action.enabled)
|
if (action.enabled)
|
||||||
item.actor.remove_style_pseudo_class('insensitive');
|
item.actor.remove_style_pseudo_class('insensitive');
|
||||||
else
|
else
|
||||||
@ -2027,7 +2024,7 @@ const RemoteMenu = new Lang.Class({
|
|||||||
if (action.items.length) {
|
if (action.items.length) {
|
||||||
for (let i = 0; i < action.items.length; i++) {
|
for (let i = 0; i < action.items.length; i++) {
|
||||||
let item = action.items[i];
|
let item = action.items[i];
|
||||||
item.actor.reactive = item.actor.can_focus = action.enabled;
|
item.actor.reactive = action.enabled;
|
||||||
|
|
||||||
if (action.enabled)
|
if (action.enabled)
|
||||||
item.actor.remove_style_pseudo_class('insensitive');
|
item.actor.remove_style_pseudo_class('insensitive');
|
||||||
|
@ -195,7 +195,8 @@ st_bin_navigate_focus (StWidget *widget,
|
|||||||
StBinPrivate *priv = ST_BIN (widget)->priv;
|
StBinPrivate *priv = ST_BIN (widget)->priv;
|
||||||
ClutterActor *bin_actor = CLUTTER_ACTOR (widget);
|
ClutterActor *bin_actor = CLUTTER_ACTOR (widget);
|
||||||
|
|
||||||
if (st_widget_get_can_focus (widget))
|
if (clutter_actor_get_reactive (bin_actor) &&
|
||||||
|
st_widget_get_can_focus (widget))
|
||||||
{
|
{
|
||||||
if (from && clutter_actor_contains (bin_actor, from))
|
if (from && clutter_actor_contains (bin_actor, from))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -285,7 +285,8 @@ st_entry_navigate_focus (StWidget *widget,
|
|||||||
|
|
||||||
if (from == priv->entry)
|
if (from == priv->entry)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else if (st_widget_get_can_focus (widget))
|
else if (clutter_actor_get_reactive (CLUTTER_ACTOR (widget)) &&
|
||||||
|
st_widget_get_can_focus (widget))
|
||||||
{
|
{
|
||||||
clutter_actor_grab_key_focus (priv->entry);
|
clutter_actor_grab_key_focus (priv->entry);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -1880,7 +1880,8 @@ st_widget_real_navigate_focus (StWidget *widget,
|
|||||||
while (focus_child && clutter_actor_get_parent (focus_child) != widget_actor)
|
while (focus_child && clutter_actor_get_parent (focus_child) != widget_actor)
|
||||||
focus_child = clutter_actor_get_parent (focus_child);
|
focus_child = clutter_actor_get_parent (focus_child);
|
||||||
|
|
||||||
if (widget->priv->can_focus)
|
if (clutter_actor_get_reactive (widget_actor) &&
|
||||||
|
widget->priv->can_focus)
|
||||||
{
|
{
|
||||||
if (!focus_child)
|
if (!focus_child)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user