1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
use serde::{Deserialize, Serialize};
use zvariant::Type;
/// Describes a relationship between one object and another.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, Type, Hash)]
pub enum RelationType {
/// Not a meaningful relationship; clients should not normally encounter this value.
Null = 0,
/// Object is a label for one or more other objects.
LabelFor,
/// Object is labelled by one or more other objects.
LabelledBy,
/// Object is an interactive object which modifies the state,
/// onscreen location, or other attributes of one or more target objects.
ControllerFor,
/// Object state, position, etc. is modified/controlled by user interaction
/// with one or more other objects.
/// For instance a viewport or scroll pane may be `ControlledBy` scrollbars.
ControlledBy,
/// Object has a grouping relationship (e.g. 'same group as') to one or more other objects.
MemberOf,
/// Object is a tooltip associated with another object.
TooltipFor,
/// Object is a child of the target.
NodeChildOf,
/// Object is a parent of the target.
NodeParentOf,
/// Used to indicate that a relationship exists, but its type is not
/// specified in the enumeration.
Extended,
/// Object renders content which flows logically to another object.
/// For instance, text in a paragraph may flow to another object
/// which is not the 'next sibling' in the accessibility hierarchy.
FlowsTo,
/// Reciprocal of `FlowsTo`.
FlowsFrom,
/// Object is visually and semantically considered a subwindow of another object,
/// even though it is not the object's child.
/// Useful when dealing with embedded applications and other cases where the
/// widget hierarchy does not map cleanly to the onscreen presentation.
SubwindowOf,
/// Similar to `SubwindowOf`, but specifically used for cross-process embedding.
Embeds,
/// Reciprocal of `Embeds`. Used to denote content rendered by embedded renderers
/// that live in a separate process space from the embedding context.
EmbeddedBy,
///Denotes that the object is a transient window or frame associated with another
/// onscreen object. Similar to `TooltipFor`, but more general.
/// Useful for windows which are technically toplevels but which, for one or more reasons,
/// do not explicitly cause their associated window to lose 'window focus'.
/// Creation of an [`crate::Role::Window`] object with the `PopupFor` relation usually requires
/// some presentation action on the part of assistive technology clients,
/// even though the previous toplevel [`crate::Role::Frame`] object may still be the active window.
PopupFor,
/// This is the reciprocal relation to `PopupFor`.
ParentWindowOf,
/// Reciprocal of `DescribedBy`. Indicates that this object provides descriptive information
/// about the target object(s). See also `DetailsFor` and `ErrorFor`.
DescriptionFor,
/// Reciprocal of `DescriptionFor`.
/// Indicates that one or more target objects provide descriptive information
/// about this object. This relation type is most appropriate for information
/// that is not essential as its presentation may be user-configurable and/or
/// limited to an on-demand mechanism such as an assistive technology command.
/// For brief, essential information such as can be found in a widget's on-screen
/// label, use `LabelledBy`. For an on-screen error message, use `ErrorMessage`.
/// For lengthy extended descriptive information contained in an on-screen object,
/// consider using `Details` as assistive technologies may provide a means
/// for the user to navigate to objects containing detailed descriptions so that
/// their content can be more closely reviewed.
DescribedBy,
/// Reciprocal of `DetailsFor`.
/// Indicates that this object has a detailed or extended description,
/// the contents of which can be found in the target object(s).
/// This relation type is most appropriate for information that is sufficiently lengthy
/// as to make navigation to the container of that information desirable.
/// For less verbose information suitable for announcement only, see `DescribedBy`.
/// If the detailed information describes an error condition, `ErrorFor` should be used instead.
/// Included in upstream [AT-SPI2-CORE](https://gitlab.gnome.org/GNOME/at-spi2-core) since 2.26.
Details,
/// Reciprocal of `Details`.
/// Indicates that this object provides a detailed or extended description about the target
/// object(s). See also `DescriptionFor` and `ErrorFor`.
/// Included in upstream [AT-SPI2-CORE](https://gitlab.gnome.org/GNOME/at-spi2-core) since 2.26.
DetailsFor,
/// Reciprocal of `ErrorFor`.
/// Indicates that this object has one or more errors, the nature of which is
/// described in the contents of the target object(s). Objects that have this
/// relation type should also contain [`crate::state::State::InvalidEntry`] when their
/// `GetState` method is called.
/// Included in upstream [AT-SPI2-CORE](https://gitlab.gnome.org/GNOME/at-spi2-core) since 2.26.
ErrorMessage,
/// Reciprocal of `ErrorMessage`.
/// Indicates that this object contains an error message describing an invalid condition
/// in the target object(s).
/// Included in upstream [AT-SPI2-CORE](https://gitlab.gnome.org/GNOME/at-spi2-core) since 2.26.
ErrorFor,
}