atspi_common/
relation_type.rs

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