Base accessibility API.

This commit is contained in:
Pāvels Nadtočajevs
2025-03-21 16:42:23 +02:00
parent af2c713971
commit b106dfd4f9
124 changed files with 7631 additions and 181 deletions

View File

@ -144,12 +144,15 @@ private:
Color color = Color(1, 1, 1);
};
mutable int64_t next_item_id = 0;
struct Line {
Vector<Gutter> gutters;
String data;
Array bidi_override;
Ref<TextParagraph> data_buf;
Vector<RID> accessibility_text_root_element;
String ime_data;
Array ime_bidi_override;
@ -227,6 +230,14 @@ private:
BitField<TextServer::LineBreakFlag> get_brk_flags() const;
int get_line_wrap_amount(int p_line) const;
const Vector<RID> get_accessibility_elements(int p_line);
void update_accessibility(int p_line, RID p_root);
void clear_accessibility() {
for (int i = 0; i < text.size(); i++) {
text.write[i].accessibility_text_root_element.clear();
}
}
Vector<Vector2i> get_line_wrap_ranges(int p_line) const;
const Ref<TextParagraph> get_line_data(int p_line) const;
float get_indent_offset(int p_line, bool p_rtl) const;
@ -275,13 +286,14 @@ private:
/* Text */
Text text;
bool setting_text = false;
bool alt_start = false;
bool alt_start_no_hold = false;
uint32_t alt_code = 0;
bool tab_input_mode = true;
// Text properties.
String ime_text = "";
Point2 ime_selection;
@ -628,6 +640,8 @@ private:
bool draw_tabs = false;
bool draw_spaces = false;
RID accessibility_text_root_element_nl;
/*** Super internal Core API. Everything builds on it. ***/
bool text_changed_dirty = false;
void _text_changed();
@ -718,6 +732,17 @@ protected:
virtual void _paste_internal(int p_caret);
virtual void _paste_primary_clipboard_internal(int p_caret);
void _accessibility_action_set_selection(const Variant &p_data);
void _accessibility_action_replace_selected(const Variant &p_data);
void _accessibility_action_set_value(const Variant &p_data);
void _accessibility_action_menu(const Variant &p_data);
void _accessibility_scroll_down(const Variant &p_data);
void _accessibility_scroll_left(const Variant &p_data);
void _accessibility_scroll_right(const Variant &p_data);
void _accessibility_scroll_up(const Variant &p_data);
void _accessibility_scroll_set(const Variant &p_data);
void _accessibility_action_scroll_into_view(const Variant &p_data, int p_line, int p_wrap);
GDVIRTUAL2(_handle_unicode_input, int, int)
GDVIRTUAL1(_backspace, int)
GDVIRTUAL1(_cut, int)
@ -765,6 +790,9 @@ public:
void set_indent_wrapped_lines(bool p_enabled);
bool is_indent_wrapped_lines() const;
void set_tab_input_mode(bool p_enabled);
bool get_tab_input_mode() const;
// User controls
void set_overtype_mode_enabled(bool p_enabled);
bool is_overtype_mode_enabled() const;