mirror of
https://github.com/godotengine/godot.git
synced 2025-12-07 22:00:10 +00:00
Base accessibility API.
This commit is contained in:
parent
af2c713971
commit
b106dfd4f9
124 changed files with 7631 additions and 181 deletions
|
|
@ -56,6 +56,7 @@ private:
|
|||
friend class Tree;
|
||||
|
||||
struct Cell {
|
||||
mutable RID accessibility_cell_element;
|
||||
TreeCellMode mode = TreeItem::CELL_MODE_STRING;
|
||||
|
||||
Ref<Texture2D> icon;
|
||||
|
|
@ -64,6 +65,7 @@ private:
|
|||
String text;
|
||||
String xl_text;
|
||||
Node::AutoTranslateMode auto_translate_mode = Node::AUTO_TRANSLATE_MODE_INHERIT;
|
||||
String alt_text;
|
||||
bool edit_multiline = false;
|
||||
String suffix;
|
||||
Ref<TextParagraph> text_buf;
|
||||
|
|
@ -104,11 +106,13 @@ private:
|
|||
Callable custom_draw_callback;
|
||||
|
||||
struct Button {
|
||||
mutable RID accessibility_button_element;
|
||||
int id = 0;
|
||||
bool disabled = false;
|
||||
Ref<Texture2D> texture;
|
||||
Color color = Color(1, 1, 1, 1);
|
||||
String tooltip;
|
||||
String alt_text;
|
||||
};
|
||||
|
||||
Vector<Button> buttons;
|
||||
|
|
@ -125,6 +129,9 @@ private:
|
|||
void draw_icon(const RID &p_where, const Point2 &p_pos, const Size2 &p_size = Size2(), const Color &p_color = Color()) const;
|
||||
};
|
||||
|
||||
mutable RID accessibility_row_element;
|
||||
mutable bool accessibility_row_dirty = true;
|
||||
|
||||
Vector<Cell> cells;
|
||||
|
||||
bool collapsed = false; // Won't show children.
|
||||
|
|
@ -165,6 +172,22 @@ private:
|
|||
}
|
||||
|
||||
_FORCE_INLINE_ void _unlink_from_tree() {
|
||||
if (accessibility_row_element.is_valid()) {
|
||||
DisplayServer::get_singleton()->accessibility_free_element(accessibility_row_element);
|
||||
accessibility_row_element = RID();
|
||||
}
|
||||
for (Cell &cell : cells) {
|
||||
if (cell.accessibility_cell_element.is_valid()) {
|
||||
DisplayServer::get_singleton()->accessibility_free_element(cell.accessibility_cell_element);
|
||||
cell.accessibility_cell_element = RID();
|
||||
}
|
||||
for (Cell::Button &btn : cell.buttons) {
|
||||
if (btn.accessibility_button_element.is_valid()) {
|
||||
DisplayServer::get_singleton()->accessibility_free_element(btn.accessibility_button_element);
|
||||
btn.accessibility_button_element = RID();
|
||||
}
|
||||
}
|
||||
}
|
||||
TreeItem *p = get_prev();
|
||||
if (p) {
|
||||
p->next = next;
|
||||
|
|
@ -190,6 +213,11 @@ private:
|
|||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
void _add_button_bind_compat_76829(int p_column, const Ref<Texture2D> &p_button, int p_id, bool p_disabled, const String &p_tooltip);
|
||||
static void _bind_compatibility_methods();
|
||||
#endif
|
||||
|
||||
// Bind helpers.
|
||||
Dictionary _get_range_config(int p_column) {
|
||||
Dictionary d;
|
||||
|
|
@ -240,6 +268,9 @@ public:
|
|||
void set_text(int p_column, String p_text);
|
||||
String get_text(int p_column) const;
|
||||
|
||||
void set_alt_text(int p_column, String p_text);
|
||||
String get_alt_text(int p_column) const;
|
||||
|
||||
void set_text_direction(int p_column, Control::TextDirection p_text_direction);
|
||||
Control::TextDirection get_text_direction(int p_column) const;
|
||||
|
||||
|
|
@ -277,7 +308,7 @@ public:
|
|||
int get_icon_max_width(int p_column) const;
|
||||
|
||||
void clear_buttons();
|
||||
void add_button(int p_column, const Ref<Texture2D> &p_button, int p_id = -1, bool p_disabled = false, const String &p_tooltip = "");
|
||||
void add_button(int p_column, const Ref<Texture2D> &p_button, int p_id = -1, bool p_disabled = false, const String &p_tooltip = "", const String &p_alt_text = "");
|
||||
int get_button_count(int p_column) const;
|
||||
String get_button_tooltip_text(int p_column, int p_index) const;
|
||||
Ref<Texture2D> get_button(int p_column, int p_index) const;
|
||||
|
|
@ -287,6 +318,7 @@ public:
|
|||
Color get_button_color(int p_column, int p_index) const;
|
||||
void set_button_tooltip_text(int p_column, int p_index, const String &p_tooltip);
|
||||
void set_button(int p_column, int p_index, const Ref<Texture2D> &p_button);
|
||||
void set_button_alt_text(int p_column, int p_index, const String &p_alt_text);
|
||||
void set_button_color(int p_column, int p_index, const Color &p_color);
|
||||
void set_button_disabled(int p_column, int p_index, bool p_disabled);
|
||||
bool is_button_disabled(int p_column, int p_index) const;
|
||||
|
|
@ -460,6 +492,7 @@ private:
|
|||
Rect2 custom_popup_rect;
|
||||
int edited_col = -1;
|
||||
int selected_col = -1;
|
||||
int selected_button = -1;
|
||||
int popup_edited_item_col = -1;
|
||||
bool hide_root = false;
|
||||
SelectMode select_mode = SELECT_SINGLE;
|
||||
|
|
@ -469,6 +502,7 @@ private:
|
|||
int drop_mode_flags = 0;
|
||||
|
||||
struct ColumnInfo {
|
||||
mutable RID accessibility_col_element;
|
||||
int custom_min_width = 0;
|
||||
int expand_ratio = 1;
|
||||
bool expand = true;
|
||||
|
|
@ -493,6 +527,8 @@ private:
|
|||
VBoxContainer *popup_editor_vb = nullptr;
|
||||
|
||||
bool popup_edit_committed = true;
|
||||
RID accessibility_scroll_element;
|
||||
|
||||
Popup *popup_editor = nullptr;
|
||||
LineEdit *line_editor = nullptr;
|
||||
TextEdit *text_editor = nullptr;
|
||||
|
|
@ -624,7 +660,6 @@ private:
|
|||
CLICK_NONE,
|
||||
CLICK_TITLE,
|
||||
CLICK_BUTTON,
|
||||
|
||||
};
|
||||
|
||||
ClickType click_type = Cache::CLICK_NONE;
|
||||
|
|
@ -714,13 +749,39 @@ private:
|
|||
Rect2 _get_content_rect() const; // Considering the background stylebox and scrollbars.
|
||||
Rect2 _get_item_focus_rect(const TreeItem *p_item) const;
|
||||
|
||||
void _check_item_accessibility(TreeItem *p_item, PackedStringArray &r_warnings, int &r_row) const;
|
||||
|
||||
void _accessibility_clean_info(TreeItem *p_item);
|
||||
void _accessibility_update_item(Point2 &r_ofs, TreeItem *p_item, int &r_row, int p_level);
|
||||
|
||||
protected:
|
||||
virtual void _update_theme_item_cache() override;
|
||||
|
||||
void _notification(int p_what);
|
||||
static void _bind_methods();
|
||||
|
||||
void _accessibility_action_scroll_down(const Variant &p_data);
|
||||
void _accessibility_action_scroll_left(const Variant &p_data);
|
||||
void _accessibility_action_scroll_right(const Variant &p_data);
|
||||
void _accessibility_action_scroll_up(const Variant &p_data);
|
||||
void _accessibility_action_scroll_set(const Variant &p_data);
|
||||
void _accessibility_action_scroll_into_view(const Variant &p_data, TreeItem *p_item, int p_col);
|
||||
void _accessibility_action_focus(const Variant &p_data, TreeItem *p_item, int p_col);
|
||||
void _accessibility_action_blur(const Variant &p_data, TreeItem *p_item, int p_col);
|
||||
void _accessibility_action_collapse(const Variant &p_data, TreeItem *p_item);
|
||||
void _accessibility_action_expand(const Variant &p_data, TreeItem *p_item);
|
||||
void _accessibility_action_set_text_value(const Variant &p_data, TreeItem *p_item, int p_col);
|
||||
void _accessibility_action_set_num_value(const Variant &p_data, TreeItem *p_item, int p_col);
|
||||
void _accessibility_action_set_bool_value(const Variant &p_data, TreeItem *p_item, int p_col);
|
||||
void _accessibility_action_set_inc(const Variant &p_data, TreeItem *p_item, int p_col);
|
||||
void _accessibility_action_set_dec(const Variant &p_data, TreeItem *p_item, int p_col);
|
||||
void _accessibility_action_edit_custom(const Variant &p_data, TreeItem *p_item, int p_col);
|
||||
void _accessibility_action_button_press(const Variant &p_data, TreeItem *p_item, int p_col, int p_btn);
|
||||
|
||||
public:
|
||||
PackedStringArray get_accessibility_configuration_warnings() const override;
|
||||
virtual RID get_focused_accessibility_element() const override;
|
||||
|
||||
virtual void gui_input(const Ref<InputEvent> &p_event) override;
|
||||
|
||||
virtual String get_tooltip(const Point2 &p_pos) const override;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue