Do not show accessibility configuration warnings for non-focusable controls, account for name fallback.
This commit is contained in:
+64
-61
@@ -544,74 +544,77 @@ void GraphNode::gui_input(const Ref<InputEvent> &p_event) {
|
||||
GraphElement::gui_input(p_event);
|
||||
}
|
||||
|
||||
String GraphNode::_get_accessibility_name() const {
|
||||
String name = Control::_get_accessibility_name();
|
||||
if (name.is_empty()) {
|
||||
name = get_name();
|
||||
}
|
||||
name = vformat(ETR("graph node %s (%s)"), name, get_title());
|
||||
|
||||
if (slot_table.has(selected_slot)) {
|
||||
GraphEdit *graph = Object::cast_to<GraphEdit>(get_parent());
|
||||
Dictionary type_info;
|
||||
if (graph) {
|
||||
type_info = graph->get_type_names();
|
||||
}
|
||||
const Slot &slot = slot_table[selected_slot];
|
||||
name += ", " + vformat(ETR("slot %d of %d"), selected_slot + 1, slot_count);
|
||||
if (slot.enable_left) {
|
||||
if (type_info.has(slot.type_left)) {
|
||||
name += "," + vformat(ETR("input port, type: %s"), type_info[slot.type_left]);
|
||||
} else {
|
||||
name += "," + vformat(ETR("input port, type: %d"), slot.type_left);
|
||||
}
|
||||
if (graph) {
|
||||
for (int i = 0; i < left_port_cache.size(); i++) {
|
||||
if (left_port_cache[i].slot_index == selected_slot) {
|
||||
String cd = graph->get_connections_description(get_name(), i);
|
||||
if (cd.is_empty()) {
|
||||
name += " " + ETR("no connections");
|
||||
} else {
|
||||
name += " " + cd;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (slot.enable_right) {
|
||||
if (type_info.has(slot.type_right)) {
|
||||
name += "," + vformat(ETR("output port, type: %s"), type_info[slot.type_right]);
|
||||
} else {
|
||||
name += "," + vformat(ETR("output port, type: %d"), slot.type_right);
|
||||
}
|
||||
if (graph) {
|
||||
for (int i = 0; i < right_port_cache.size(); i++) {
|
||||
if (right_port_cache[i].slot_index == selected_slot) {
|
||||
String cd = graph->get_connections_description(get_name(), i);
|
||||
if (cd.is_empty()) {
|
||||
name += " " + ETR("no connections");
|
||||
} else {
|
||||
name += " " + cd;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (graph && graph->is_keyboard_connecting()) {
|
||||
name += ", " + ETR("currently selecting target port");
|
||||
}
|
||||
} else {
|
||||
name += ", " + vformat(ETR("has %d slots"), slot_count);
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
void GraphNode::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_ACCESSIBILITY_UPDATE: {
|
||||
RID ae = get_accessibility_element();
|
||||
ERR_FAIL_COND(ae.is_null());
|
||||
|
||||
String name = get_accessibility_name();
|
||||
if (name.is_empty()) {
|
||||
name = get_name();
|
||||
}
|
||||
name = vformat(ETR("graph node %s (%s)"), name, get_title());
|
||||
|
||||
if (slot_table.has(selected_slot)) {
|
||||
GraphEdit *graph = Object::cast_to<GraphEdit>(get_parent());
|
||||
Dictionary type_info;
|
||||
if (graph) {
|
||||
type_info = graph->get_type_names();
|
||||
}
|
||||
const Slot &slot = slot_table[selected_slot];
|
||||
name += ", " + vformat(ETR("slot %d of %d"), selected_slot + 1, slot_count);
|
||||
if (slot.enable_left) {
|
||||
if (type_info.has(slot.type_left)) {
|
||||
name += "," + vformat(ETR("input port, type: %s"), type_info[slot.type_left]);
|
||||
} else {
|
||||
name += "," + vformat(ETR("input port, type: %d"), slot.type_left);
|
||||
}
|
||||
if (graph) {
|
||||
for (int i = 0; i < left_port_cache.size(); i++) {
|
||||
if (left_port_cache[i].slot_index == selected_slot) {
|
||||
String cd = graph->get_connections_description(get_name(), i);
|
||||
if (cd.is_empty()) {
|
||||
name += " " + ETR("no connections");
|
||||
} else {
|
||||
name += " " + cd;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (slot.enable_right) {
|
||||
if (type_info.has(slot.type_right)) {
|
||||
name += "," + vformat(ETR("output port, type: %s"), type_info[slot.type_right]);
|
||||
} else {
|
||||
name += "," + vformat(ETR("output port, type: %d"), slot.type_right);
|
||||
}
|
||||
if (graph) {
|
||||
for (int i = 0; i < right_port_cache.size(); i++) {
|
||||
if (right_port_cache[i].slot_index == selected_slot) {
|
||||
String cd = graph->get_connections_description(get_name(), i);
|
||||
if (cd.is_empty()) {
|
||||
name += " " + ETR("no connections");
|
||||
} else {
|
||||
name += " " + cd;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (graph && graph->is_keyboard_connecting()) {
|
||||
name += ", " + ETR("currently selecting target port");
|
||||
}
|
||||
} else {
|
||||
name += ", " + vformat(ETR("has %d slots"), slot_count);
|
||||
}
|
||||
AccessibilityServer::get_singleton()->update_set_role(ae, AccessibilityServerEnums::AccessibilityRole::ROLE_LIST);
|
||||
AccessibilityServer::get_singleton()->update_set_name(ae, name);
|
||||
AccessibilityServer::get_singleton()->update_add_custom_action(ae, CustomAccessibilityAction::ACTION_CONNECT_INPUT, ETR("Edit Input Port Connection"));
|
||||
AccessibilityServer::get_singleton()->update_add_custom_action(ae, CustomAccessibilityAction::ACTION_CONNECT_OUTPUT, ETR("Edit Output Port Connection"));
|
||||
AccessibilityServer::get_singleton()->update_add_custom_action(ae, CustomAccessibilityAction::ACTION_FOLLOW_INPUT, ETR("Follow Input Port Connection"));
|
||||
|
||||
Reference in New Issue
Block a user