18#if QT_CONFIG(accessibility)
21quint64 spiStatesFromQState(QAccessible::State state)
26 setSpiStateBit(&spiState, ATSPI_STATE_ACTIVE);
28 setSpiStateBit(&spiState, ATSPI_STATE_EDITABLE);
29 if (!state.disabled) {
30 setSpiStateBit(&spiState, ATSPI_STATE_ENABLED);
31 setSpiStateBit(&spiState, ATSPI_STATE_SENSITIVE);
34 setSpiStateBit(&spiState, ATSPI_STATE_SELECTED);
36 setSpiStateBit(&spiState, ATSPI_STATE_FOCUSED);
38 setSpiStateBit(&spiState, ATSPI_STATE_PRESSED);
40 setSpiStateBit(&spiState, ATSPI_STATE_CHECKABLE);
42 setSpiStateBit(&spiState, ATSPI_STATE_CHECKED);
43 if (state.checkStateMixed)
44 setSpiStateBit(&spiState, ATSPI_STATE_INDETERMINATE);
46 setSpiStateBit(&spiState, ATSPI_STATE_READ_ONLY);
48 if (state.defaultButton)
49 setSpiStateBit(&spiState, ATSPI_STATE_IS_DEFAULT);
51 setSpiStateBit(&spiState, ATSPI_STATE_EXPANDABLE);
53 setSpiStateBit(&spiState, ATSPI_STATE_EXPANDED);
55 setSpiStateBit(&spiState, ATSPI_STATE_COLLAPSED);
57 setSpiStateBit(&spiState, ATSPI_STATE_BUSY);
58 if (state.marqueed || state.animated)
59 setSpiStateBit(&spiState, ATSPI_STATE_ANIMATED);
60 if (!state.invisible && !state.offscreen) {
61 setSpiStateBit(&spiState, ATSPI_STATE_SHOWING);
62 setSpiStateBit(&spiState, ATSPI_STATE_VISIBLE);
65 setSpiStateBit(&spiState, ATSPI_STATE_RESIZABLE);
69 setSpiStateBit(&spiState, ATSPI_STATE_FOCUSABLE);
71 setSpiStateBit(&spiState, ATSPI_STATE_SELECTABLE);
74 setSpiStateBit(&spiState, ATSPI_STATE_VISITED);
75 if (state.multiSelectable)
76 setSpiStateBit(&spiState, ATSPI_STATE_MULTISELECTABLE);
77 if (state.extSelectable)
78 setSpiStateBit(&spiState, ATSPI_STATE_SELECTABLE);
81 setSpiStateBit(&spiState, ATSPI_STATE_HAS_POPUP);
83 setSpiStateBit(&spiState, ATSPI_STATE_MODAL);
85 setSpiStateBit(&spiState, ATSPI_STATE_MULTI_LINE);
90QSpiUIntList spiStateSetFromSpiStates(quint64 states)
92 uint low = states & 0xFFFFFFFF;
93 uint high = (states >> 32) & 0xFFFFFFFF;
95 QSpiUIntList stateList;
96 stateList.append(low);
97 stateList.append(high);
101quint64 spiStatesFromSpiStateSet(QSpiUIntList stateSet)
103 if (stateSet.size() != 2) {
104 qWarning() <<
"State set doesn't use expected size of 64 bit";
108 return stateSet.at(0) | (quint64(stateSet.at(1)) << 32);
111AtspiRelationType qAccessibleRelationToAtSpiRelation(QAccessible::Relation relation)
115 case QAccessible::Label:
116 return ATSPI_RELATION_LABELLED_BY;
117 case QAccessible::Labelled:
118 return ATSPI_RELATION_LABEL_FOR;
119 case QAccessible::Controller:
120 return ATSPI_RELATION_CONTROLLED_BY;
121 case QAccessible::Controlled:
122 return ATSPI_RELATION_CONTROLLER_FOR;
123 case QAccessible::DescriptionFor:
124 return ATSPI_RELATION_DESCRIBED_BY;
125 case QAccessible::Described:
126 return ATSPI_RELATION_DESCRIPTION_FOR;
127 case QAccessible::FlowsFrom:
128 return ATSPI_RELATION_FLOWS_TO;
129 case QAccessible::FlowsTo:
130 return ATSPI_RELATION_FLOWS_FROM;
132 qWarning() <<
"Cannot return AT-SPI relation for:" << relation;
134 return ATSPI_RELATION_NULL;