Update access-kit to 0.17.0

This commit is contained in:
Pāvels Nadtočajevs 2025-07-24 10:15:41 +03:00
parent 2d113cc224
commit 3f757c41fc
No known key found for this signature in database
GPG key ID: 8413210218EF35D2
14 changed files with 289 additions and 50 deletions

View file

@ -7,7 +7,7 @@ env:
SCONS_FLAGS: >- SCONS_FLAGS: >-
dev_mode=yes dev_mode=yes
module_text_server_fb_enabled=yes module_text_server_fb_enabled=yes
"accesskit_sdk_path=${{ github.workspace }}/accesskit-c-0.16.0/" "accesskit_sdk_path=${{ github.workspace }}/accesskit-c-0.17.0/"
GODOT_CPP_BRANCH: 4.4 GODOT_CPP_BRANCH: 4.4
DOTNET_NOLOGO: true DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true DOTNET_CLI_TELEMETRY_OPTOUT: true
@ -162,12 +162,12 @@ jobs:
uses: dsaltares/fetch-gh-release-asset@1.1.2 uses: dsaltares/fetch-gh-release-asset@1.1.2
with: with:
repo: AccessKit/accesskit-c repo: AccessKit/accesskit-c
version: tags/0.16.0 version: tags/0.17.0
file: accesskit-c-0.16.0.zip file: accesskit-c-0.17.0.zip
target: accesskit-c-0.16.0/accesskit_c.zip target: accesskit-c-0.17.0/accesskit_c.zip
- name: Extract pre-built AccessKit - name: Extract pre-built AccessKit
run: unzip -o accesskit-c-0.16.0/accesskit_c.zip run: unzip -o accesskit-c-0.17.0/accesskit_c.zip
- name: Install mold linker - name: Install mold linker
if: matrix.proj-test if: matrix.proj-test

View file

@ -7,7 +7,7 @@ env:
SCONS_FLAGS: >- SCONS_FLAGS: >-
dev_mode=yes dev_mode=yes
module_text_server_fb_enabled=yes module_text_server_fb_enabled=yes
"accesskit_sdk_path=${{ github.workspace }}/accesskit-c-0.16.0/" "accesskit_sdk_path=${{ github.workspace }}/accesskit-c-0.17.0/"
jobs: jobs:
build-macos: build-macos:
@ -51,12 +51,12 @@ jobs:
uses: dsaltares/fetch-gh-release-asset@1.1.2 uses: dsaltares/fetch-gh-release-asset@1.1.2
with: with:
repo: AccessKit/accesskit-c repo: AccessKit/accesskit-c
version: tags/0.16.0 version: tags/0.17.0
file: accesskit-c-0.16.0.zip file: accesskit-c-0.17.0.zip
target: accesskit-c-0.16.0/accesskit_c.zip target: accesskit-c-0.17.0/accesskit_c.zip
- name: Extract pre-built AccessKit - name: Extract pre-built AccessKit
run: unzip -o accesskit-c-0.16.0/accesskit_c.zip run: unzip -o accesskit-c-0.17.0/accesskit_c.zip
- name: Setup Vulkan SDK - name: Setup Vulkan SDK
id: vulkan-sdk id: vulkan-sdk

View file

@ -10,7 +10,7 @@ env:
debug_symbols=no debug_symbols=no
d3d12=yes d3d12=yes
"angle_libs=${{ github.workspace }}/" "angle_libs=${{ github.workspace }}/"
"accesskit_sdk_path=${{ github.workspace }}/accesskit-c-0.16.0/" "accesskit_sdk_path=${{ github.workspace }}/accesskit-c-0.17.0/"
SCONS_CACHE_MSVC_CONFIG: true SCONS_CACHE_MSVC_CONFIG: true
PYTHONIOENCODING: utf8 PYTHONIOENCODING: utf8
@ -90,12 +90,12 @@ jobs:
uses: dsaltares/fetch-gh-release-asset@1.1.2 uses: dsaltares/fetch-gh-release-asset@1.1.2
with: with:
repo: AccessKit/accesskit-c repo: AccessKit/accesskit-c
version: tags/0.16.0 version: tags/0.17.0
file: accesskit-c-0.16.0.zip file: accesskit-c-0.17.0.zip
target: accesskit-c-0.16.0/accesskit_c.zip target: accesskit-c-0.17.0/accesskit_c.zip
- name: Extract pre-built AccessKit - name: Extract pre-built AccessKit
run: unzip -o accesskit-c-0.16.0/accesskit_c.zip run: unzip -o accesskit-c-0.17.0/accesskit_c.zip
- name: Compilation - name: Compilation
uses: ./.github/actions/godot-build uses: ./.github/actions/godot-build

View file

@ -2833,22 +2833,22 @@
Scroll backward action, callback argument is not set. Scroll backward action, callback argument is not set.
</constant> </constant>
<constant name="ACTION_SCROLL_DOWN" value="12" enum="AccessibilityAction"> <constant name="ACTION_SCROLL_DOWN" value="12" enum="AccessibilityAction">
Scroll down action, callback argument is not set. Scroll down action, callback argument is set to [enum AccessibilityScrollUnit].
</constant> </constant>
<constant name="ACTION_SCROLL_FORWARD" value="13" enum="AccessibilityAction"> <constant name="ACTION_SCROLL_FORWARD" value="13" enum="AccessibilityAction">
Scroll forward action, callback argument is not set. Scroll forward action, callback argument is not set.
</constant> </constant>
<constant name="ACTION_SCROLL_LEFT" value="14" enum="AccessibilityAction"> <constant name="ACTION_SCROLL_LEFT" value="14" enum="AccessibilityAction">
Scroll left action, callback argument is not set. Scroll left action, callback argument is set to [enum AccessibilityScrollUnit].
</constant> </constant>
<constant name="ACTION_SCROLL_RIGHT" value="15" enum="AccessibilityAction"> <constant name="ACTION_SCROLL_RIGHT" value="15" enum="AccessibilityAction">
Scroll right action, callback argument is not set. Scroll right action, callback argument is set to [enum AccessibilityScrollUnit].
</constant> </constant>
<constant name="ACTION_SCROLL_UP" value="16" enum="AccessibilityAction"> <constant name="ACTION_SCROLL_UP" value="16" enum="AccessibilityAction">
Scroll up action, callback argument is not set. Scroll up action, callback argument is set to [enum AccessibilityScrollUnit].
</constant> </constant>
<constant name="ACTION_SCROLL_INTO_VIEW" value="17" enum="AccessibilityAction"> <constant name="ACTION_SCROLL_INTO_VIEW" value="17" enum="AccessibilityAction">
Scroll into view action, callback argument is not set. Scroll into view action, callback argument is set to [enum AccessibilityScrollHint].
</constant> </constant>
<constant name="ACTION_SCROLL_TO_POINT" value="18" enum="AccessibilityAction"> <constant name="ACTION_SCROLL_TO_POINT" value="18" enum="AccessibilityAction">
Scroll to point action, callback argument is set to [Vector2] with the relative point coordinates. Scroll to point action, callback argument is set to [Vector2] with the relative point coordinates.
@ -2874,6 +2874,30 @@
<constant name="LIVE_ASSERTIVE" value="2" enum="AccessibilityLiveMode"> <constant name="LIVE_ASSERTIVE" value="2" enum="AccessibilityLiveMode">
Indicates that updates to the live region have the highest priority and should be presented immediately. Indicates that updates to the live region have the highest priority and should be presented immediately.
</constant> </constant>
<constant name="SCROLL_UNIT_ITEM" value="0" enum="AccessibilityScrollUnit">
The amount by which to scroll. A single item of a list, line of text.
</constant>
<constant name="SCROLL_UNIT_PAGE" value="1" enum="AccessibilityScrollUnit">
The amount by which to scroll. A single page.
</constant>
<constant name="SCROLL_HINT_TOP_LEFT" value="0" enum="AccessibilityScrollHint">
A preferred position for the node scrolled into view. Top-left edge of the scroll container.
</constant>
<constant name="SCROLL_HINT_BOTTOM_RIGHT" value="1" enum="AccessibilityScrollHint">
A preferred position for the node scrolled into view. Bottom-right edge of the scroll container.
</constant>
<constant name="SCROLL_HINT_TOP_EDGE" value="2" enum="AccessibilityScrollHint">
A preferred position for the node scrolled into view. Top edge of the scroll container.
</constant>
<constant name="SCROLL_HINT_BOTTOM_EDGE" value="3" enum="AccessibilityScrollHint">
A preferred position for the node scrolled into view. Bottom edge of the scroll container.
</constant>
<constant name="SCROLL_HINT_LEFT_EDGE" value="4" enum="AccessibilityScrollHint">
A preferred position for the node scrolled into view. Left edge of the scroll container.
</constant>
<constant name="SCROLL_HINT_RIGHT_EDGE" value="5" enum="AccessibilityScrollHint">
A preferred position for the node scrolled into view. Right edge of the scroll container.
</constant>
<constant name="MOUSE_MODE_VISIBLE" value="0" enum="MouseMode"> <constant name="MOUSE_MODE_VISIBLE" value="0" enum="MouseMode">
Makes the mouse cursor visible if it is hidden. Makes the mouse cursor visible if it is hidden.
</constant> </constant>

View file

@ -136,8 +136,36 @@ void AccessibilityDriverAccessKit::_accessibility_action_callback(struct accessk
case ACCESSKIT_ACTION_DATA_NUMERIC_VALUE: { case ACCESSKIT_ACTION_DATA_NUMERIC_VALUE: {
rq_data = p_request->data.value.numeric_value; rq_data = p_request->data.value.numeric_value;
} break; } break;
case ACCESSKIT_ACTION_DATA_SCROLL_TARGET_RECT: { case ACCESSKIT_ACTION_DATA_SCROLL_HINT: {
rq_data = Rect2(p_request->data.value.scroll_target_rect.x0, p_request->data.value.scroll_target_rect.y0, p_request->data.value.scroll_target_rect.x1 - p_request->data.value.scroll_target_rect.x0, p_request->data.value.scroll_target_rect.y1 - p_request->data.value.scroll_target_rect.y0); switch (p_request->data.value.scroll_hint) {
case ACCESSKIT_SCROLL_HINT_TOP_LEFT: {
rq_data = DisplayServer::SCROLL_HINT_TOP_LEFT;
} break;
case ACCESSKIT_SCROLL_HINT_BOTTOM_RIGHT: {
rq_data = DisplayServer::SCROLL_HINT_BOTTOM_RIGHT;
} break;
case ACCESSKIT_SCROLL_HINT_TOP_EDGE: {
rq_data = DisplayServer::SCROLL_HINT_TOP_EDGE;
} break;
case ACCESSKIT_SCROLL_HINT_BOTTOM_EDGE: {
rq_data = DisplayServer::SCROLL_HINT_BOTTOM_EDGE;
} break;
case ACCESSKIT_SCROLL_HINT_LEFT_EDGE: {
rq_data = DisplayServer::SCROLL_HINT_LEFT_EDGE;
} break;
case ACCESSKIT_SCROLL_HINT_RIGHT_EDGE: {
rq_data = DisplayServer::SCROLL_HINT_RIGHT_EDGE;
} break;
default:
break;
}
} break;
case ACCESSKIT_ACTION_DATA_SCROLL_UNIT: {
if (p_request->data.value.scroll_unit == ACCESSKIT_SCROLL_UNIT_ITEM) {
rq_data = DisplayServer::SCROLL_UNIT_ITEM;
} else if (p_request->data.value.scroll_unit == ACCESSKIT_SCROLL_UNIT_PAGE) {
rq_data = DisplayServer::SCROLL_UNIT_PAGE;
}
} break; } break;
case ACCESSKIT_ACTION_DATA_SCROLL_TO_POINT: { case ACCESSKIT_ACTION_DATA_SCROLL_TO_POINT: {
rq_data = Point2(p_request->data.value.scroll_to_point.x, p_request->data.value.scroll_to_point.y); rq_data = Point2(p_request->data.value.scroll_to_point.x, p_request->data.value.scroll_to_point.y);
@ -1621,9 +1649,9 @@ AccessibilityDriverAccessKit::AccessibilityDriverAccessKit() {
//action_map[DisplayServer::AccessibilityAction::ACTION_LOAD_INLINE_TEXT_BOXES] = ACCESSKIT_ACTION_LOAD_INLINE_TEXT_BOXES; //action_map[DisplayServer::AccessibilityAction::ACTION_LOAD_INLINE_TEXT_BOXES] = ACCESSKIT_ACTION_LOAD_INLINE_TEXT_BOXES;
action_map[DisplayServer::AccessibilityAction::ACTION_SET_TEXT_SELECTION] = ACCESSKIT_ACTION_SET_TEXT_SELECTION; action_map[DisplayServer::AccessibilityAction::ACTION_SET_TEXT_SELECTION] = ACCESSKIT_ACTION_SET_TEXT_SELECTION;
action_map[DisplayServer::AccessibilityAction::ACTION_REPLACE_SELECTED_TEXT] = ACCESSKIT_ACTION_REPLACE_SELECTED_TEXT; action_map[DisplayServer::AccessibilityAction::ACTION_REPLACE_SELECTED_TEXT] = ACCESSKIT_ACTION_REPLACE_SELECTED_TEXT;
action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_BACKWARD] = ACCESSKIT_ACTION_SCROLL_BACKWARD; action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_BACKWARD] = ACCESSKIT_ACTION_SCROLL_UP;
action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_DOWN] = ACCESSKIT_ACTION_SCROLL_DOWN; action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_DOWN] = ACCESSKIT_ACTION_SCROLL_DOWN;
action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_FORWARD] = ACCESSKIT_ACTION_SCROLL_FORWARD; action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_FORWARD] = ACCESSKIT_ACTION_SCROLL_DOWN;
action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_LEFT] = ACCESSKIT_ACTION_SCROLL_LEFT; action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_LEFT] = ACCESSKIT_ACTION_SCROLL_LEFT;
action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_RIGHT] = ACCESSKIT_ACTION_SCROLL_RIGHT; action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_RIGHT] = ACCESSKIT_ACTION_SCROLL_RIGHT;
action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_UP] = ACCESSKIT_ACTION_SCROLL_UP; action_map[DisplayServer::AccessibilityAction::ACTION_SCROLL_UP] = ACCESSKIT_ACTION_SCROLL_UP;

View file

@ -1204,19 +1204,35 @@ void ItemList::_accessibility_action_scroll_set(const Variant &p_data) {
} }
void ItemList::_accessibility_action_scroll_up(const Variant &p_data) { void ItemList::_accessibility_action_scroll_up(const Variant &p_data) {
scroll_bar_v->set_value(scroll_bar_v->get_value() - scroll_bar_v->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
scroll_bar_v->set_value(scroll_bar_v->get_value() - scroll_bar_v->get_page() / 4);
} else {
scroll_bar_v->set_value(scroll_bar_v->get_value() - scroll_bar_v->get_page());
}
} }
void ItemList::_accessibility_action_scroll_down(const Variant &p_data) { void ItemList::_accessibility_action_scroll_down(const Variant &p_data) {
scroll_bar_v->set_value(scroll_bar_v->get_value() + scroll_bar_v->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
scroll_bar_v->set_value(scroll_bar_v->get_value() + scroll_bar_v->get_page() / 4);
} else {
scroll_bar_v->set_value(scroll_bar_v->get_value() + scroll_bar_v->get_page());
}
} }
void ItemList::_accessibility_action_scroll_left(const Variant &p_data) { void ItemList::_accessibility_action_scroll_left(const Variant &p_data) {
scroll_bar_h->set_value(scroll_bar_h->get_value() - scroll_bar_h->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
scroll_bar_h->set_value(scroll_bar_h->get_value() - scroll_bar_h->get_page() / 4);
} else {
scroll_bar_h->set_value(scroll_bar_h->get_value() - scroll_bar_h->get_page());
}
} }
void ItemList::_accessibility_action_scroll_right(const Variant &p_data) { void ItemList::_accessibility_action_scroll_right(const Variant &p_data) {
scroll_bar_h->set_value(scroll_bar_h->get_value() + scroll_bar_h->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
scroll_bar_h->set_value(scroll_bar_h->get_value() + scroll_bar_h->get_page() / 4);
} else {
scroll_bar_h->set_value(scroll_bar_h->get_value() + scroll_bar_h->get_page());
}
} }
void ItemList::_accessibility_action_scroll_into_view(const Variant &p_data, int p_index) { void ItemList::_accessibility_action_scroll_into_view(const Variant &p_data, int p_index) {

View file

@ -2174,11 +2174,19 @@ void RichTextLabel::_accessibility_action_menu(const Variant &p_data) {
} }
void RichTextLabel::_accessibility_scroll_down(const Variant &p_data) { void RichTextLabel::_accessibility_scroll_down(const Variant &p_data) {
vscroll->set_value(vscroll->get_value() + vscroll->get_page() / 4); if ((uint8_t)p_data == 0) {
vscroll->set_value(vscroll->get_value() + vscroll->get_page() / 4);
} else {
vscroll->set_value(vscroll->get_value() + vscroll->get_page());
}
} }
void RichTextLabel::_accessibility_scroll_up(const Variant &p_data) { void RichTextLabel::_accessibility_scroll_up(const Variant &p_data) {
vscroll->set_value(vscroll->get_value() - vscroll->get_page() / 4); if ((uint8_t)p_data == 0) {
vscroll->set_value(vscroll->get_value() - vscroll->get_page() / 4);
} else {
vscroll->set_value(vscroll->get_value() - vscroll->get_page());
}
} }
void RichTextLabel::_accessibility_scroll_set(const Variant &p_data) { void RichTextLabel::_accessibility_scroll_set(const Variant &p_data) {

View file

@ -413,19 +413,35 @@ void ScrollContainer::_accessibility_action_scroll_set(const Variant &p_data) {
} }
void ScrollContainer::_accessibility_action_scroll_up(const Variant &p_data) { void ScrollContainer::_accessibility_action_scroll_up(const Variant &p_data) {
v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page() / ScrollBar::PAGE_DIVISOR); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page() / ScrollBar::PAGE_DIVISOR);
} else {
v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page());
}
} }
void ScrollContainer::_accessibility_action_scroll_down(const Variant &p_data) { void ScrollContainer::_accessibility_action_scroll_down(const Variant &p_data) {
v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() / ScrollBar::PAGE_DIVISOR); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() / ScrollBar::PAGE_DIVISOR);
} else {
v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page());
}
} }
void ScrollContainer::_accessibility_action_scroll_left(const Variant &p_data) { void ScrollContainer::_accessibility_action_scroll_left(const Variant &p_data) {
h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page() / ScrollBar::PAGE_DIVISOR); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page() / ScrollBar::PAGE_DIVISOR);
} else {
h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page());
}
} }
void ScrollContainer::_accessibility_action_scroll_right(const Variant &p_data) { void ScrollContainer::_accessibility_action_scroll_right(const Variant &p_data) {
h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() / ScrollBar::PAGE_DIVISOR); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() / ScrollBar::PAGE_DIVISOR);
} else {
h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page());
}
} }
void ScrollContainer::_notification(int p_what) { void ScrollContainer::_notification(int p_what) {

View file

@ -679,22 +679,38 @@ void TextEdit::_accessibility_action_menu(const Variant &p_data) {
} }
void TextEdit::_accessibility_scroll_down(const Variant &p_data) { void TextEdit::_accessibility_scroll_down(const Variant &p_data) {
v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() / 4);
} else {
v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page());
}
queue_accessibility_update(); queue_accessibility_update();
} }
void TextEdit::_accessibility_scroll_left(const Variant &p_data) { void TextEdit::_accessibility_scroll_left(const Variant &p_data) {
h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page() / 4);
} else {
h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page());
}
queue_accessibility_update(); queue_accessibility_update();
} }
void TextEdit::_accessibility_scroll_right(const Variant &p_data) { void TextEdit::_accessibility_scroll_right(const Variant &p_data) {
h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() / 4);
} else {
h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page());
}
queue_accessibility_update(); queue_accessibility_update();
} }
void TextEdit::_accessibility_scroll_up(const Variant &p_data) { void TextEdit::_accessibility_scroll_up(const Variant &p_data) {
v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page() / 4);
} else {
v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page());
}
queue_accessibility_update(); queue_accessibility_update();
} }

View file

@ -4571,19 +4571,35 @@ PackedStringArray Tree::get_accessibility_configuration_warnings() const {
} }
void Tree::_accessibility_action_scroll_down(const Variant &p_data) { void Tree::_accessibility_action_scroll_down(const Variant &p_data) {
v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() / 4);
} else {
v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page());
}
} }
void Tree::_accessibility_action_scroll_left(const Variant &p_data) { void Tree::_accessibility_action_scroll_left(const Variant &p_data) {
h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page() / 4);
} else {
h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page());
}
} }
void Tree::_accessibility_action_scroll_right(const Variant &p_data) { void Tree::_accessibility_action_scroll_right(const Variant &p_data) {
h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() / 4);
} else {
h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page());
}
} }
void Tree::_accessibility_action_scroll_up(const Variant &p_data) { void Tree::_accessibility_action_scroll_up(const Variant &p_data) {
v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page() / 4); if ((DisplayServer::AccessibilityScrollUnit)p_data == DisplayServer::SCROLL_UNIT_ITEM) {
v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page() / 4);
} else {
v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page());
}
} }
void Tree::_accessibility_action_scroll_set(const Variant &p_data) { void Tree::_accessibility_action_scroll_set(const Variant &p_data) {

View file

@ -1749,6 +1749,16 @@ void DisplayServer::_bind_methods() {
BIND_ENUM_CONSTANT(LIVE_POLITE); BIND_ENUM_CONSTANT(LIVE_POLITE);
BIND_ENUM_CONSTANT(LIVE_ASSERTIVE); BIND_ENUM_CONSTANT(LIVE_ASSERTIVE);
BIND_ENUM_CONSTANT(SCROLL_UNIT_ITEM);
BIND_ENUM_CONSTANT(SCROLL_UNIT_PAGE);
BIND_ENUM_CONSTANT(SCROLL_HINT_TOP_LEFT);
BIND_ENUM_CONSTANT(SCROLL_HINT_BOTTOM_RIGHT);
BIND_ENUM_CONSTANT(SCROLL_HINT_TOP_EDGE);
BIND_ENUM_CONSTANT(SCROLL_HINT_BOTTOM_EDGE);
BIND_ENUM_CONSTANT(SCROLL_HINT_LEFT_EDGE);
BIND_ENUM_CONSTANT(SCROLL_HINT_RIGHT_EDGE);
BIND_ENUM_CONSTANT(MOUSE_MODE_VISIBLE); BIND_ENUM_CONSTANT(MOUSE_MODE_VISIBLE);
BIND_ENUM_CONSTANT(MOUSE_MODE_HIDDEN); BIND_ENUM_CONSTANT(MOUSE_MODE_HIDDEN);
BIND_ENUM_CONSTANT(MOUSE_MODE_CAPTURED); BIND_ENUM_CONSTANT(MOUSE_MODE_CAPTURED);

View file

@ -653,6 +653,20 @@ public:
LIVE_ASSERTIVE, LIVE_ASSERTIVE,
}; };
enum AccessibilityScrollUnit {
SCROLL_UNIT_ITEM,
SCROLL_UNIT_PAGE,
};
enum AccessibilityScrollHint {
SCROLL_HINT_TOP_LEFT,
SCROLL_HINT_BOTTOM_RIGHT,
SCROLL_HINT_TOP_EDGE,
SCROLL_HINT_BOTTOM_EDGE,
SCROLL_HINT_LEFT_EDGE,
SCROLL_HINT_RIGHT_EDGE,
};
static AccessibilityMode accessibility_get_mode() { return accessibility_mode; } static AccessibilityMode accessibility_get_mode() { return accessibility_mode; }
static void accessibility_set_mode(AccessibilityMode p_mode) { accessibility_mode = p_mode; } static void accessibility_set_mode(AccessibilityMode p_mode) { accessibility_mode = p_mode; }
@ -981,6 +995,8 @@ VARIANT_ENUM_CAST(DisplayServer::AccessibilityFlags)
VARIANT_ENUM_CAST(DisplayServer::AccessibilityLiveMode) VARIANT_ENUM_CAST(DisplayServer::AccessibilityLiveMode)
VARIANT_ENUM_CAST(DisplayServer::AccessibilityPopupType) VARIANT_ENUM_CAST(DisplayServer::AccessibilityPopupType)
VARIANT_ENUM_CAST(DisplayServer::AccessibilityRole) VARIANT_ENUM_CAST(DisplayServer::AccessibilityRole)
VARIANT_ENUM_CAST(DisplayServer::AccessibilityScrollUnit)
VARIANT_ENUM_CAST(DisplayServer::AccessibilityScrollHint)
VARIANT_ENUM_CAST(DisplayServer::WindowEvent) VARIANT_ENUM_CAST(DisplayServer::WindowEvent)
VARIANT_ENUM_CAST(DisplayServer::Feature) VARIANT_ENUM_CAST(DisplayServer::Feature)

View file

@ -8,7 +8,7 @@ readability.
## accesskit ## accesskit
- Upstream: https://github.com/AccessKit/accesskit-c - Upstream: https://github.com/AccessKit/accesskit-c
- Version: 0.16.0 (06c1779473ff4304f42ea254f77fef2e33f982b0, 2025) - Version: 0.17.0 (f69571eca23151be07a41bf493ca48a2b44b6a8b, 2025)
- License: MIT - License: MIT
Files extracted from upstream source: Files extracted from upstream source:

View file

@ -53,16 +53,25 @@ enum accesskit_action
* Requires [`ActionRequest::data`] to be set to [`ActionData::Value`]. * Requires [`ActionRequest::data`] to be set to [`ActionData::Value`].
*/ */
ACCESSKIT_ACTION_REPLACE_SELECTED_TEXT, ACCESSKIT_ACTION_REPLACE_SELECTED_TEXT,
ACCESSKIT_ACTION_SCROLL_BACKWARD, /**
* Scroll down by the specified unit.
*/
ACCESSKIT_ACTION_SCROLL_DOWN, ACCESSKIT_ACTION_SCROLL_DOWN,
ACCESSKIT_ACTION_SCROLL_FORWARD, /**
* Scroll left by the specified unit.
*/
ACCESSKIT_ACTION_SCROLL_LEFT, ACCESSKIT_ACTION_SCROLL_LEFT,
/**
* Scroll right by the specified unit.
*/
ACCESSKIT_ACTION_SCROLL_RIGHT, ACCESSKIT_ACTION_SCROLL_RIGHT,
/**
* Scroll up by the specified unit.
*/
ACCESSKIT_ACTION_SCROLL_UP, ACCESSKIT_ACTION_SCROLL_UP,
/** /**
* Scroll any scrollable containers to make the target object visible * Scroll any scrollable containers to make the target node visible.
* on the screen. Optionally set [`ActionRequest::data`] to * Optionally set [`ActionRequest::data`] to [`ActionData::ScrollHint`].
* [`ActionData::ScrollTargetRect`].
*/ */
ACCESSKIT_ACTION_SCROLL_INTO_VIEW, ACCESSKIT_ACTION_SCROLL_INTO_VIEW,
/** /**
@ -439,6 +448,50 @@ enum accesskit_role
typedef uint8_t accesskit_role; typedef uint8_t accesskit_role;
#endif // __cplusplus #endif // __cplusplus
/**
* A suggestion about where the node being scrolled into view should be
* positioned relative to the edges of the scrollable container.
*/
enum accesskit_scroll_hint
#ifdef __cplusplus
: uint8_t
#endif // __cplusplus
{
ACCESSKIT_SCROLL_HINT_TOP_LEFT,
ACCESSKIT_SCROLL_HINT_BOTTOM_RIGHT,
ACCESSKIT_SCROLL_HINT_TOP_EDGE,
ACCESSKIT_SCROLL_HINT_BOTTOM_EDGE,
ACCESSKIT_SCROLL_HINT_LEFT_EDGE,
ACCESSKIT_SCROLL_HINT_RIGHT_EDGE,
};
#ifndef __cplusplus
typedef uint8_t accesskit_scroll_hint;
#endif // __cplusplus
/**
* The amount by which to scroll in the direction specified by one of the
* `Scroll` actions.
*/
enum accesskit_scroll_unit
#ifdef __cplusplus
: uint8_t
#endif // __cplusplus
{
/**
* A single item of a list, line of text (for vertical scrolling),
* character (for horizontal scrolling), or an approximation of
* one of these.
*/
ACCESSKIT_SCROLL_UNIT_ITEM,
/**
* The amount of content that fits in the viewport.
*/
ACCESSKIT_SCROLL_UNIT_PAGE,
};
#ifndef __cplusplus
typedef uint8_t accesskit_scroll_unit;
#endif // __cplusplus
enum accesskit_sort_direction enum accesskit_sort_direction
#ifdef __cplusplus #ifdef __cplusplus
: uint8_t : uint8_t
@ -849,7 +902,13 @@ typedef enum accesskit_action_data_Tag {
ACCESSKIT_ACTION_DATA_CUSTOM_ACTION, ACCESSKIT_ACTION_DATA_CUSTOM_ACTION,
ACCESSKIT_ACTION_DATA_VALUE, ACCESSKIT_ACTION_DATA_VALUE,
ACCESSKIT_ACTION_DATA_NUMERIC_VALUE, ACCESSKIT_ACTION_DATA_NUMERIC_VALUE,
ACCESSKIT_ACTION_DATA_SCROLL_TARGET_RECT, ACCESSKIT_ACTION_DATA_SCROLL_UNIT,
/**
* Optional suggestion for `ACCESSKIT_ACTION_SCROLL_INTO_VIEW`, specifying
* the preferred position of the target node relative to the scrollable
* container's viewport.
*/
ACCESSKIT_ACTION_DATA_SCROLL_HINT,
ACCESSKIT_ACTION_DATA_SCROLL_TO_POINT, ACCESSKIT_ACTION_DATA_SCROLL_TO_POINT,
ACCESSKIT_ACTION_DATA_SET_SCROLL_OFFSET, ACCESSKIT_ACTION_DATA_SET_SCROLL_OFFSET,
ACCESSKIT_ACTION_DATA_SET_TEXT_SELECTION, ACCESSKIT_ACTION_DATA_SET_TEXT_SELECTION,
@ -868,7 +927,10 @@ typedef struct accesskit_action_data {
double numeric_value; double numeric_value;
}; };
struct { struct {
struct accesskit_rect scroll_target_rect; accesskit_scroll_unit scroll_unit;
};
struct {
accesskit_scroll_hint scroll_hint;
}; };
struct { struct {
struct accesskit_point scroll_to_point; struct accesskit_point scroll_to_point;
@ -982,6 +1044,33 @@ void accesskit_node_remove_action(struct accesskit_node *node,
void accesskit_node_clear_actions(struct accesskit_node *node); void accesskit_node_clear_actions(struct accesskit_node *node);
/**
* Return whether the specified action is in the set supported on this node's
* direct children in the filtered tree.
*/
bool accesskit_node_child_supports_action(const struct accesskit_node *node,
accesskit_action action);
/**
* Add the specified action to the set supported on this node's direct
* children in the filtered tree.
*/
void accesskit_node_add_child_action(struct accesskit_node *node,
accesskit_action action);
/**
* Remove the specified action from the set supported on this node's direct
* children in the filtered tree.
*/
void accesskit_node_remove_child_action(struct accesskit_node *node,
accesskit_action action);
/**
* Clear the set of actions supported on this node's direct children in the
* filtered tree.
*/
void accesskit_node_clear_child_actions(struct accesskit_node *node);
bool accesskit_node_is_hidden(const struct accesskit_node *node); bool accesskit_node_is_hidden(const struct accesskit_node *node);
void accesskit_node_set_hidden(struct accesskit_node *node); void accesskit_node_set_hidden(struct accesskit_node *node);