a11y: Only support blur and focus actions on widgets that are actually focusable
This commit is contained in:
@@ -2262,7 +2262,11 @@ void Control::set_focus_mode(FocusMode p_focus_mode) {
|
||||
release_focus();
|
||||
}
|
||||
|
||||
if (data.focus_mode == p_focus_mode) {
|
||||
return;
|
||||
}
|
||||
data.focus_mode = p_focus_mode;
|
||||
queue_accessibility_update();
|
||||
}
|
||||
|
||||
Control::FocusMode Control::get_focus_mode() const {
|
||||
@@ -2286,6 +2290,7 @@ void Control::set_focus_behavior_recursive(FocusBehaviorRecursive p_focus_behavi
|
||||
}
|
||||
data.focus_behavior_recursive = p_focus_behavior_recursive;
|
||||
_update_focus_behavior_recursive();
|
||||
queue_accessibility_update();
|
||||
}
|
||||
|
||||
Control::FocusBehaviorRecursive Control::get_focus_behavior_recursive() const {
|
||||
@@ -3750,8 +3755,10 @@ void Control::_notification(int p_notification) {
|
||||
DisplayServer::get_singleton()->accessibility_update_set_flag(ae, DisplayServer::AccessibilityFlags::FLAG_CLIPS_CHILDREN, data.clip_contents);
|
||||
DisplayServer::get_singleton()->accessibility_update_set_flag(ae, DisplayServer::AccessibilityFlags::FLAG_TOUCH_PASSTHROUGH, data.mouse_filter == MOUSE_FILTER_PASS);
|
||||
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_FOCUS, callable_mp(this, &Control::_accessibility_action_foucs));
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_BLUR, callable_mp(this, &Control::_accessibility_action_blur));
|
||||
if (_is_focusable()) {
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_FOCUS, callable_mp(this, &Control::_accessibility_action_foucs));
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_BLUR, callable_mp(this, &Control::_accessibility_action_blur));
|
||||
}
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_SHOW_TOOLTIP, callable_mp(this, &Control::_accessibility_action_show_tooltip));
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_HIDE_TOOLTIP, callable_mp(this, &Control::_accessibility_action_hide_tooltip));
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_SCROLL_INTO_VIEW, callable_mp(this, &Control::_accessibility_action_scroll_into_view));
|
||||
|
||||
Reference in New Issue
Block a user