Accessibility Linux: Fix all widgets reporting being editable

[ChangeLog][QtGui] Accessibility on Linux reported all objects as being
editable instead of just editable text items.

Change-Id: I8bca2799a2e5b175b3ca515fee5dd02eae23829e
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
This commit is contained in:
Frederik Gladhorn 2014-01-10 16:42:36 +01:00 committed by The Qt Project
parent c6d3fe8873
commit 113cfa9aa6

View File

@ -61,17 +61,12 @@ quint64 spiStatesFromQState(QAccessible::State state)
{ {
quint64 spiState = 0; quint64 spiState = 0;
setSpiStateBit(&spiState, ATSPI_STATE_EDITABLE); if (state.editable)
setSpiStateBit(&spiState, ATSPI_STATE_ENABLED); setSpiStateBit(&spiState, ATSPI_STATE_EDITABLE);
setSpiStateBit(&spiState, ATSPI_STATE_SHOWING); if (!state.disabled) {
setSpiStateBit(&spiState, ATSPI_STATE_VISIBLE); setSpiStateBit(&spiState, ATSPI_STATE_ENABLED);
setSpiStateBit(&spiState, ATSPI_STATE_SENSITIVE); setSpiStateBit(&spiState, ATSPI_STATE_SENSITIVE);
if (state.disabled) {
unsetSpiStateBit(&spiState, ATSPI_STATE_ENABLED);
unsetSpiStateBit(&spiState, ATSPI_STATE_SENSITIVE);
} }
if (state.selected) if (state.selected)
setSpiStateBit(&spiState, ATSPI_STATE_SELECTED); setSpiStateBit(&spiState, ATSPI_STATE_SELECTED);
if (state.focused) if (state.focused)
@ -95,9 +90,9 @@ quint64 spiStatesFromQState(QAccessible::State state)
setSpiStateBit(&spiState, ATSPI_STATE_BUSY); setSpiStateBit(&spiState, ATSPI_STATE_BUSY);
if (state.marqueed || state.animated) if (state.marqueed || state.animated)
setSpiStateBit(&spiState, ATSPI_STATE_ANIMATED); setSpiStateBit(&spiState, ATSPI_STATE_ANIMATED);
if (state.invisible || state.offscreen) { if (!state.invisible && !state.offscreen) {
unsetSpiStateBit(&spiState, ATSPI_STATE_SHOWING); setSpiStateBit(&spiState, ATSPI_STATE_SHOWING);
unsetSpiStateBit(&spiState, ATSPI_STATE_VISIBLE); setSpiStateBit(&spiState, ATSPI_STATE_VISIBLE);
} }
if (state.sizeable) if (state.sizeable)
setSpiStateBit(&spiState, ATSPI_STATE_RESIZABLE); setSpiStateBit(&spiState, ATSPI_STATE_RESIZABLE);
@ -118,10 +113,8 @@ quint64 spiStatesFromQState(QAccessible::State state)
// if (state.HasPopup) // if (state.HasPopup)
if (state.modal) if (state.modal)
setSpiStateBit(&spiState, ATSPI_STATE_MODAL); setSpiStateBit(&spiState, ATSPI_STATE_MODAL);
if (state.multiLine)
// Not implemented in Qt setSpiStateBit(&spiState, ATSPI_STATE_MULTI_LINE);
// if (state.singleLine)
// setSpiStateBit(&spiState, ATSPI_STATE_SINGLE_LINE);
return spiState; return spiState;
} }