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: >-
dev_mode=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
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
@ -162,12 +162,12 @@ jobs:
uses: dsaltares/fetch-gh-release-asset@1.1.2
with:
repo: AccessKit/accesskit-c
version: tags/0.16.0
file: accesskit-c-0.16.0.zip
target: accesskit-c-0.16.0/accesskit_c.zip
version: tags/0.17.0
file: accesskit-c-0.17.0.zip
target: accesskit-c-0.17.0/accesskit_c.zip
- 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
if: matrix.proj-test

View file

@ -7,7 +7,7 @@ env:
SCONS_FLAGS: >-
dev_mode=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:
build-macos:
@ -51,12 +51,12 @@ jobs:
uses: dsaltares/fetch-gh-release-asset@1.1.2
with:
repo: AccessKit/accesskit-c
version: tags/0.16.0
file: accesskit-c-0.16.0.zip
target: accesskit-c-0.16.0/accesskit_c.zip
version: tags/0.17.0
file: accesskit-c-0.17.0.zip
target: accesskit-c-0.17.0/accesskit_c.zip
- 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
id: vulkan-sdk

View file

@ -10,7 +10,7 @@ env:
debug_symbols=no
d3d12=yes
"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
PYTHONIOENCODING: utf8
@ -90,12 +90,12 @@ jobs:
uses: dsaltares/fetch-gh-release-asset@1.1.2
with:
repo: AccessKit/accesskit-c
version: tags/0.16.0
file: accesskit-c-0.16.0.zip
target: accesskit-c-0.16.0/accesskit_c.zip
version: tags/0.17.0
file: accesskit-c-0.17.0.zip
target: accesskit-c-0.17.0/accesskit_c.zip
- 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
uses: ./.github/actions/godot-build

View file

@ -2833,22 +2833,22 @@
Scroll backward action, callback argument is not set.
</constant>
<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 name="ACTION_SCROLL_FORWARD" value="13" enum="AccessibilityAction">
Scroll forward action, callback argument is not set.
</constant>
<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 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 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 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 name="ACTION_SCROLL_TO_POINT" value="18" enum="AccessibilityAction">
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">
Indicates that updates to the live region have the highest priority and should be presented immediately.
</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">
Makes the mouse cursor visible if it is hidden.
</constant>

View file

@ -136,8 +136,36 @@ void AccessibilityDriverAccessKit::_accessibility_action_callback(struct accessk
case ACCESSKIT_ACTION_DATA_NUMERIC_VALUE: {
rq_data = p_request->data.value.numeric_value;
} break;
case ACCESSKIT_ACTION_DATA_SCROLL_TARGET_RECT: {
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);
case ACCESSKIT_ACTION_DATA_SCROLL_HINT: {
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;
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);
@ -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_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_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_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_RIGHT] = ACCESSKIT_ACTION_SCROLL_RIGHT;
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) {
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) {
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) {
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) {
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) {

View file

@ -2174,11 +2174,19 @@ void RichTextLabel::_accessibility_action_menu(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) {
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) {

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) {
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) {
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) {
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) {
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) {

View file

@ -679,22 +679,38 @@ void TextEdit::_accessibility_action_menu(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();
}
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();
}
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();
}
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();
}

View file

@ -4571,19 +4571,35 @@ PackedStringArray Tree::get_accessibility_configuration_warnings() const {
}
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) {
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) {
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) {
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) {

View file

@ -1749,6 +1749,16 @@ void DisplayServer::_bind_methods() {
BIND_ENUM_CONSTANT(LIVE_POLITE);
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_HIDDEN);
BIND_ENUM_CONSTANT(MOUSE_MODE_CAPTURED);

View file

@ -653,6 +653,20 @@ public:
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 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::AccessibilityPopupType)
VARIANT_ENUM_CAST(DisplayServer::AccessibilityRole)
VARIANT_ENUM_CAST(DisplayServer::AccessibilityScrollUnit)
VARIANT_ENUM_CAST(DisplayServer::AccessibilityScrollHint)
VARIANT_ENUM_CAST(DisplayServer::WindowEvent)
VARIANT_ENUM_CAST(DisplayServer::Feature)

View file

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

View file

@ -53,16 +53,25 @@ enum accesskit_action
* Requires [`ActionRequest::data`] to be set to [`ActionData::Value`].
*/
ACCESSKIT_ACTION_REPLACE_SELECTED_TEXT,
ACCESSKIT_ACTION_SCROLL_BACKWARD,
/**
* Scroll down by the specified unit.
*/
ACCESSKIT_ACTION_SCROLL_DOWN,
ACCESSKIT_ACTION_SCROLL_FORWARD,
/**
* Scroll left by the specified unit.
*/
ACCESSKIT_ACTION_SCROLL_LEFT,
/**
* Scroll right by the specified unit.
*/
ACCESSKIT_ACTION_SCROLL_RIGHT,
/**
* Scroll up by the specified unit.
*/
ACCESSKIT_ACTION_SCROLL_UP,
/**
* Scroll any scrollable containers to make the target object visible
* on the screen. Optionally set [`ActionRequest::data`] to
* [`ActionData::ScrollTargetRect`].
* Scroll any scrollable containers to make the target node visible.
* Optionally set [`ActionRequest::data`] to [`ActionData::ScrollHint`].
*/
ACCESSKIT_ACTION_SCROLL_INTO_VIEW,
/**
@ -439,6 +448,50 @@ enum accesskit_role
typedef uint8_t accesskit_role;
#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
#ifdef __cplusplus
: uint8_t
@ -849,7 +902,13 @@ typedef enum accesskit_action_data_Tag {
ACCESSKIT_ACTION_DATA_CUSTOM_ACTION,
ACCESSKIT_ACTION_DATA_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_SET_SCROLL_OFFSET,
ACCESSKIT_ACTION_DATA_SET_TEXT_SELECTION,
@ -868,7 +927,10 @@ typedef struct accesskit_action_data {
double numeric_value;
};
struct {
struct accesskit_rect scroll_target_rect;
accesskit_scroll_unit scroll_unit;
};
struct {
accesskit_scroll_hint scroll_hint;
};
struct {
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);
/**
* 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);
void accesskit_node_set_hidden(struct accesskit_node *node);