From f3e86a8cc87754d7efbd33c15f61d554ce3160f0 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Tue, 17 Jun 2014 19:10:43 +0200 Subject: Accessibility Linux: Fix methods returning rects as iiii for AT-SPI According to the spec rects get returned with iiii but we were directly serializing QRect resulting in (iiii) as signature. This would trip up Orca when trying to use flat review in text edits. Task-number: QTBUG-39702 Change-Id: I8d6769688586e678d27cc4341de5176a91f057fc Reviewed-by: Gabriel de Dietrich --- src/platformsupport/linuxaccessibility/atspiadaptor.cpp | 10 +++++----- src/platformsupport/linuxaccessibility/atspiadaptor_p.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/platformsupport/linuxaccessibility') diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp index 0fa1d96242..90be8d6a31 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp @@ -1952,17 +1952,17 @@ QVariantList AtSpiAdaptor::getAttributeValue(QAccessibleInterface *interface, in return list; } -QRect AtSpiAdaptor::getCharacterExtents(QAccessibleInterface *interface, int offset, uint coordType) const +QList AtSpiAdaptor::getCharacterExtents(QAccessibleInterface *interface, int offset, uint coordType) const { QRect rect = interface->textInterface()->characterRect(offset); if (coordType == ATSPI_COORD_TYPE_WINDOW) rect = translateRectToWindowCoordinates(interface, rect); - return rect; + return QList() << rect.x() << rect.y() << rect.width() << rect.height(); } -QRect AtSpiAdaptor::getRangeExtents(QAccessibleInterface *interface, +QList AtSpiAdaptor::getRangeExtents(QAccessibleInterface *interface, int startOffset, int endOffset, uint coordType) const { if (endOffset == -1) @@ -1970,7 +1970,7 @@ QRect AtSpiAdaptor::getRangeExtents(QAccessibleInterface *interface, QAccessibleTextInterface *textInterface = interface->textInterface(); if (endOffset <= startOffset || !textInterface) - return QRect(); + return QList() << -1 << -1 << 0 << 0; QRect rect = textInterface->characterRect(startOffset); for (int i=startOffset + 1; i <= endOffset; i++) @@ -1980,7 +1980,7 @@ QRect AtSpiAdaptor::getRangeExtents(QAccessibleInterface *interface, if (coordType == ATSPI_COORD_TYPE_WINDOW) rect = translateRectToWindowCoordinates(interface, rect); - return rect; + return QList() << rect.x() << rect.y() << rect.width() << rect.height(); } QRect AtSpiAdaptor::translateRectToWindowCoordinates(QAccessibleInterface *interface, const QRect &rect) diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h index 8e905e4cca..2116a4e6a9 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h +++ b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h @@ -125,8 +125,8 @@ private: // text helper functions QVariantList getAttributes(QAccessibleInterface *, int offset, bool includeDefaults) const; QVariantList getAttributeValue(QAccessibleInterface *, int offset, const QString &attributeName) const; - QRect getCharacterExtents(QAccessibleInterface *, int offset, uint coordType) const; - QRect getRangeExtents(QAccessibleInterface *, int startOffset, int endOffset, uint coordType) const; + QList getCharacterExtents(QAccessibleInterface *, int offset, uint coordType) const; + QList getRangeExtents(QAccessibleInterface *, int startOffset, int endOffset, uint coordType) const; QAccessible::TextBoundaryType qAccessibleBoundaryType(int atspiTextBoundaryType) const; static bool inheritsQAction(QObject *object); -- cgit v1.2.3