From 8307ab784eb4d8d22441ee61f02cb381684ca3a2 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Tue, 5 Mar 2013 14:37:37 +0100 Subject: Make QTextCursor accessibility boundary finder available MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows re-using the function in QtQuick. In addition TextBoundaryType is moved to QAccessible and QAccessible2 as namespace ceases to exist. Change-Id: I184bc2c181a22ca51ac4db4e5a080dc26d4acfe0 Reviewed-by: Jan Arve Sæther --- src/gui/accessible/qaccessible.cpp | 73 +++++++++++++++++ src/gui/accessible/qaccessible.h | 12 +++ src/gui/accessible/qaccessible2.cpp | 35 +++----- src/gui/accessible/qaccessible2_p.h | 18 +---- .../linuxaccessibility/atspiadaptor.cpp | 14 ++-- .../linuxaccessibility/atspiadaptor_p.h | 2 +- .../accessible/widgets/qaccessiblewidgets.cpp | 94 ++++------------------ .../accessible/widgets/qaccessiblewidgets.h | 8 +- src/plugins/accessible/widgets/simplewidgets.cpp | 7 +- src/plugins/accessible/widgets/simplewidgets.h | 6 +- .../platforms/windows/accessible/iaccessible2.cpp | 6 +- .../other/qaccessibility/tst_qaccessibility.cpp | 50 ++++++------ 12 files changed, 162 insertions(+), 163 deletions(-) diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp index e007c9967e..7487aabde5 100644 --- a/src/gui/accessible/qaccessible.cpp +++ b/src/gui/accessible/qaccessible.cpp @@ -46,6 +46,8 @@ #include "qaccessibleplugin.h" #include "qaccessibleobject.h" #include "qaccessiblebridge.h" +#include +#include #include #include #include @@ -789,6 +791,77 @@ void QAccessible::updateAccessibility(QAccessibleEvent *event) */ #endif +/*! + \internal + \brief getBoundaries is a helper function to find the accessible text boundaries for QTextCursor based documents. + \param documentCursor a valid cursor bound to the document (not null). It needs to ba at the position to look for the boundary + \param boundaryType the type of boundary to find + \return the boundaries as pair +*/ +QPair< int, int > QAccessible::qAccessibleTextBoundaryHelper(const QTextCursor &offsetCursor, TextBoundaryType boundaryType) +{ + Q_ASSERT(!offsetCursor.isNull()); + + QTextCursor endCursor = offsetCursor; + endCursor.movePosition(QTextCursor::End); + int characterCount = endCursor.position(); + + QPair result; + QTextCursor cursor = offsetCursor; + switch (boundaryType) { + case CharBoundary: + result.first = cursor.position(); + cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor); + result.second = cursor.position(); + break; + case WordBoundary: + cursor.movePosition(QTextCursor::StartOfWord, QTextCursor::MoveAnchor); + result.first = cursor.position(); + cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); + result.second = cursor.position(); + break; + case SentenceBoundary: { + // QCursor does not provide functionality to move to next sentence. + // We therefore find the current block, then go through the block using + // QTextBoundaryFinder and find the sentence the \offset represents + cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); + result.first = cursor.position(); + cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); + result.second = cursor.position(); + QString blockText = cursor.selectedText(); + const int offsetWithinBlockText = offsetCursor.position() - result.first; + QTextBoundaryFinder sentenceFinder(QTextBoundaryFinder::Sentence, blockText); + sentenceFinder.setPosition(offsetWithinBlockText); + int prevBoundary = offsetWithinBlockText; + int nextBoundary = offsetWithinBlockText; + if (!(sentenceFinder.boundaryReasons() & QTextBoundaryFinder::StartOfItem)) + prevBoundary = sentenceFinder.toPreviousBoundary(); + nextBoundary = sentenceFinder.toNextBoundary(); + if (nextBoundary != -1) + result.second = result.first + nextBoundary; + if (prevBoundary != -1) + result.first += prevBoundary; + break; } + case LineBoundary: + cursor.movePosition(QTextCursor::StartOfLine, QTextCursor::MoveAnchor); + result.first = cursor.position(); + cursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); + result.second = cursor.position(); + break; + case ParagraphBoundary: + cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); + result.first = cursor.position(); + cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); + result.second = cursor.position(); + break; + case NoBoundary: + result.first = 0; + result.second = characterCount; + break; + } + return result; +} + /*! \class QAccessibleInterface \brief The QAccessibleInterface class defines an interface that exposes information diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h index 8447f34154..339e3fbcd6 100644 --- a/src/gui/accessible/qaccessible.h +++ b/src/gui/accessible/qaccessible.h @@ -62,6 +62,7 @@ QT_BEGIN_NAMESPACE class QAccessibleInterface; class QAccessibleEvent; class QWindow; +class QTextCursor; // We need to inherit QObject to expose the enums to QML. class Q_GUI_EXPORT QAccessible @@ -331,6 +332,15 @@ public: TableCellInterface }; + enum TextBoundaryType { + CharBoundary, + WordBoundary, + SentenceBoundary, + ParagraphBoundary, + LineBoundary, + NoBoundary + }; + typedef QAccessibleInterface*(*InterfaceFactory)(const QString &key, QObject*); typedef void(*UpdateHandler)(QAccessibleEvent *event); typedef void(*RootObjectHandler)(QObject*); @@ -359,6 +369,8 @@ public: static void cleanup(); + static QPair< int, int > qAccessibleTextBoundaryHelper(const QTextCursor &cursor, TextBoundaryType boundaryType); + private: static UpdateHandler updateHandler; static RootObjectHandler rootObjectHandler; diff --git a/src/gui/accessible/qaccessible2.cpp b/src/gui/accessible/qaccessible2.cpp index bd9ecde260..d790fac071 100644 --- a/src/gui/accessible/qaccessible2.cpp +++ b/src/gui/accessible/qaccessible2.cpp @@ -48,17 +48,6 @@ QT_BEGIN_NAMESPACE -/*! - \namespace QAccessible2 - \ingroup accessibility - \internal - - \brief The QAccessible2 namespace defines constants relating to - IAccessible2-based interfaces - - \l{IAccessible2 Specification} -*/ - /*! \class QAccessibleTextInterface \internal @@ -139,7 +128,7 @@ QT_BEGIN_NAMESPACE of that item; returns an empty string if there is no such an item. Sets \a startOffset and \a endOffset values to -1 on error. */ -QString QAccessibleTextInterface::textBeforeOffset(int offset, QAccessible2::BoundaryType boundaryType, +QString QAccessibleTextInterface::textBeforeOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const { const QString txt = text(0, characterCount()); @@ -155,13 +144,13 @@ QString QAccessibleTextInterface::textBeforeOffset(int offset, QAccessible2::Bou QTextBoundaryFinder::BoundaryType type; switch (boundaryType) { - case QAccessible2::CharBoundary: + case QAccessible::CharBoundary: type = QTextBoundaryFinder::Grapheme; break; - case QAccessible2::WordBoundary: + case QAccessible::WordBoundary: type = QTextBoundaryFinder::Word; break; - case QAccessible2::SentenceBoundary: + case QAccessible::SentenceBoundary: type = QTextBoundaryFinder::Sentence; break; default: @@ -199,7 +188,7 @@ QString QAccessibleTextInterface::textBeforeOffset(int offset, QAccessible2::Bou of that item; returns an empty string if there is no such an item. Sets \a startOffset and \a endOffset values to -1 on error. */ -QString QAccessibleTextInterface::textAfterOffset(int offset, QAccessible2::BoundaryType boundaryType, +QString QAccessibleTextInterface::textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const { const QString txt = text(0, characterCount()); @@ -215,13 +204,13 @@ QString QAccessibleTextInterface::textAfterOffset(int offset, QAccessible2::Boun QTextBoundaryFinder::BoundaryType type; switch (boundaryType) { - case QAccessible2::CharBoundary: + case QAccessible::CharBoundary: type = QTextBoundaryFinder::Grapheme; break; - case QAccessible2::WordBoundary: + case QAccessible::WordBoundary: type = QTextBoundaryFinder::Word; break; - case QAccessible2::SentenceBoundary: + case QAccessible::SentenceBoundary: type = QTextBoundaryFinder::Sentence; break; default: @@ -259,7 +248,7 @@ QString QAccessibleTextInterface::textAfterOffset(int offset, QAccessible2::Boun of that item; returns an empty string if there is no such an item. Sets \a startOffset and \a endOffset values to -1 on error. */ -QString QAccessibleTextInterface::textAtOffset(int offset, QAccessible2::BoundaryType boundaryType, +QString QAccessibleTextInterface::textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const { const QString txt = text(0, characterCount()); @@ -275,13 +264,13 @@ QString QAccessibleTextInterface::textAtOffset(int offset, QAccessible2::Boundar QTextBoundaryFinder::BoundaryType type; switch (boundaryType) { - case QAccessible2::CharBoundary: + case QAccessible::CharBoundary: type = QTextBoundaryFinder::Grapheme; break; - case QAccessible2::WordBoundary: + case QAccessible::WordBoundary: type = QTextBoundaryFinder::Word; break; - case QAccessible2::SentenceBoundary: + case QAccessible::SentenceBoundary: type = QTextBoundaryFinder::Sentence; break; default: diff --git a/src/gui/accessible/qaccessible2_p.h b/src/gui/accessible/qaccessible2_p.h index 1a1eeea4ba..95f93e2431 100644 --- a/src/gui/accessible/qaccessible2_p.h +++ b/src/gui/accessible/qaccessible2_p.h @@ -50,18 +50,6 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_ACCESSIBILITY -namespace QAccessible2 -{ - enum BoundaryType { - CharBoundary, - WordBoundary, - SentenceBoundary, - ParagraphBoundary, - LineBoundary, - NoBoundary - }; -} - class Q_GUI_EXPORT QAccessibleTextInterface { public: @@ -79,11 +67,11 @@ public: // text virtual QString text(int startOffset, int endOffset) const = 0; - virtual QString textBeforeOffset(int offset, QAccessible2::BoundaryType boundaryType, + virtual QString textBeforeOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const; - virtual QString textAfterOffset(int offset, QAccessible2::BoundaryType boundaryType, + virtual QString textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const; - virtual QString textAtOffset(int offset, QAccessible2::BoundaryType boundaryType, + virtual QString textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const; virtual int characterCount() const = 0; diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp index e4702e8497..6efd5085ac 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp @@ -1791,7 +1791,7 @@ bool AtSpiAdaptor::textInterface(QAccessibleInterface *interface, const QString int offset = message.arguments().at(0).toInt(); int start; int end; - QString result = interface->textInterface()->textAtOffset(offset, QAccessible2::CharBoundary, &start, &end); + QString result = interface->textInterface()->textAtOffset(offset, QAccessible::CharBoundary, &start, &end); sendReply(connection, message, (int) *(qPrintable (result))); } else if (function == QLatin1String("GetCharacterExtents")) { int offset = message.arguments().at(0).toInt(); @@ -1879,23 +1879,23 @@ bool AtSpiAdaptor::textInterface(QAccessibleInterface *interface, const QString return true; } -QAccessible2::BoundaryType AtSpiAdaptor::qAccessibleBoundaryType(int atspiTextBoundaryType) const +QAccessible::TextBoundaryType AtSpiAdaptor::qAccessibleBoundaryType(int atspiTextBoundaryType) const { switch (atspiTextBoundaryType) { case ATSPI_TEXT_BOUNDARY_CHAR: - return QAccessible2::CharBoundary; + return QAccessible::CharBoundary; case ATSPI_TEXT_BOUNDARY_WORD_START: case ATSPI_TEXT_BOUNDARY_WORD_END: - return QAccessible2::WordBoundary; + return QAccessible::WordBoundary; case ATSPI_TEXT_BOUNDARY_SENTENCE_START: case ATSPI_TEXT_BOUNDARY_SENTENCE_END: - return QAccessible2::SentenceBoundary; + return QAccessible::SentenceBoundary; case ATSPI_TEXT_BOUNDARY_LINE_START: case ATSPI_TEXT_BOUNDARY_LINE_END: - return QAccessible2::LineBoundary; + return QAccessible::LineBoundary; } Q_ASSERT_X(0, "", "Requested invalid boundary type."); - return QAccessible2::CharBoundary; + return QAccessible::CharBoundary; } // FIXME all attribute methods below should share code diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h index aafaecfeae..6f005c33ab 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h +++ b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h @@ -128,7 +128,7 @@ private: 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; - QAccessible2::BoundaryType qAccessibleBoundaryType(int atspiTextBoundaryType) const; + QAccessible::TextBoundaryType qAccessibleBoundaryType(int atspiTextBoundaryType) const; static bool inheritsQAction(QObject *object); // private vars diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp index 751a722bb8..f20823f25b 100644 --- a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp +++ b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp @@ -72,8 +72,6 @@ QT_BEGIN_NAMESPACE -using namespace QAccessible2; - QString Q_GUI_EXPORT qt_accStripAmp(const QString &text); QString Q_GUI_EXPORT qt_accHotKey(const QString &text); @@ -997,83 +995,18 @@ QPoint QAccessibleTextWidget::scrollBarPosition() const return QPoint(0, 0); } -QPair< int, int > QAccessibleTextWidget::getBoundaries(int offset, BoundaryType boundaryType) const -{ - if (offset >= characterCount()) - return QPair(characterCount(), characterCount()); - if (offset < 0) - return QPair(0, 0); - - QTextCursor cursor = textCursor(); - QPair result; - - cursor.setPosition(offset); - switch (boundaryType) { - case CharBoundary: - result.first = cursor.position(); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor); - result.second = cursor.position(); - break; - case WordBoundary: - cursor.movePosition(QTextCursor::StartOfWord, QTextCursor::MoveAnchor); - result.first = cursor.position(); - cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); - result.second = cursor.position(); - break; - case SentenceBoundary: { - // QCursor does not provide functionality to move to next sentence. - // We therefore find the current block, then go through the block using - // QTextBoundaryFinder and find the sentence the \offset represents - cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - result.first = cursor.position(); - cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); - result.second = cursor.position(); - QString blockText = cursor.selectedText(); - const int offsetWithinBlockText = offset - result.first; - QTextBoundaryFinder sentenceFinder(QTextBoundaryFinder::Sentence, blockText); - sentenceFinder.setPosition(offsetWithinBlockText); - int prevBoundary = offsetWithinBlockText; - int nextBoundary = offsetWithinBlockText; - if (!(sentenceFinder.boundaryReasons() & QTextBoundaryFinder::StartOfItem)) - prevBoundary = sentenceFinder.toPreviousBoundary(); - nextBoundary = sentenceFinder.toNextBoundary(); - if (nextBoundary != -1) - result.second = result.first + nextBoundary; - if (prevBoundary != -1) - result.first += prevBoundary; - break; } - case LineBoundary: - cursor.movePosition(QTextCursor::StartOfLine, QTextCursor::MoveAnchor); - result.first = cursor.position(); - cursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); - result.second = cursor.position(); - break; - case ParagraphBoundary: - cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - result.first = cursor.position(); - cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); - result.second = cursor.position(); - break; - case NoBoundary: - result.first = 0; - result.second = characterCount(); - break; - default: - qWarning("QAccessibleTextWidget::getBoundaries: Unknown boundary type %d", boundaryType); - result.first = -1; - result.second = -1; - } - return result; -} -QString QAccessibleTextWidget::textBeforeOffset(int offset, BoundaryType boundaryType, +QString QAccessibleTextWidget::textBeforeOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const { Q_ASSERT(startOffset); Q_ASSERT(endOffset); - QPair boundaries = getBoundaries(offset, boundaryType); - boundaries = getBoundaries(boundaries.first - 1, boundaryType); + QTextCursor cursor = textCursor(); + cursor.setPosition(offset); + QPair boundaries = QAccessible::qAccessibleTextBoundaryHelper(cursor, boundaryType); + cursor.setPosition(boundaries.first - 1); + boundaries = QAccessible::qAccessibleTextBoundaryHelper(cursor, boundaryType); *startOffset = boundaries.first; *endOffset = boundaries.second; @@ -1082,14 +1015,17 @@ QString QAccessibleTextWidget::textBeforeOffset(int offset, BoundaryType boundar } -QString QAccessibleTextWidget::textAfterOffset(int offset, BoundaryType boundaryType, +QString QAccessibleTextWidget::textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const { Q_ASSERT(startOffset); Q_ASSERT(endOffset); - QPair boundaries = getBoundaries(offset, boundaryType); - boundaries = getBoundaries(boundaries.second, boundaryType); + QTextCursor cursor = textCursor(); + cursor.setPosition(offset); + QPair boundaries = QAccessible::qAccessibleTextBoundaryHelper(cursor, boundaryType); + cursor.setPosition(boundaries.second); + boundaries = QAccessible::qAccessibleTextBoundaryHelper(cursor, boundaryType); *startOffset = boundaries.first; *endOffset = boundaries.second; @@ -1097,13 +1033,15 @@ QString QAccessibleTextWidget::textAfterOffset(int offset, BoundaryType boundary return text(boundaries.first, boundaries.second); } -QString QAccessibleTextWidget::textAtOffset(int offset, BoundaryType boundaryType, +QString QAccessibleTextWidget::textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const { Q_ASSERT(startOffset); Q_ASSERT(endOffset); - QPair boundaries = getBoundaries(offset, boundaryType); + QTextCursor cursor = textCursor(); + cursor.setPosition(offset); + QPair boundaries = QAccessible::qAccessibleTextBoundaryHelper(cursor, boundaryType); *startOffset = boundaries.first; *endOffset = boundaries.second; diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.h b/src/plugins/accessible/widgets/qaccessiblewidgets.h index 35ef3ce905..c60a1d893e 100644 --- a/src/plugins/accessible/widgets/qaccessiblewidgets.h +++ b/src/plugins/accessible/widgets/qaccessiblewidgets.h @@ -92,11 +92,11 @@ public: // text QString text(int startOffset, int endOffset) const; - QString textBeforeOffset(int offset, QAccessible2::BoundaryType boundaryType, + QString textBeforeOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const; - QString textAfterOffset(int offset, QAccessible2::BoundaryType boundaryType, + QString textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const; - QString textAtOffset(int offset, QAccessible2::BoundaryType boundaryType, + QString textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const; int characterCount() const; @@ -115,8 +115,8 @@ public: protected: QTextCursor textCursorForRange(int startOffset, int endOffset) const; - QPair getBoundaries(int offset, QAccessible2::BoundaryType boundaryType) const; virtual QPoint scrollBarPosition() const; + // return the current text cursor at the caret position including a potential selection virtual QTextCursor textCursor() const = 0; virtual void setTextCursor(const QTextCursor &) = 0; virtual QTextDocument *textDocument() const = 0; diff --git a/src/plugins/accessible/widgets/simplewidgets.cpp b/src/plugins/accessible/widgets/simplewidgets.cpp index a9a43a7875..0112182a4b 100644 --- a/src/plugins/accessible/widgets/simplewidgets.cpp +++ b/src/plugins/accessible/widgets/simplewidgets.cpp @@ -67,7 +67,6 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_ACCESSIBILITY -using namespace QAccessible2; extern QList childWidgets(const QWidget *widget, bool includeTopLevel = false); QString Q_GUI_EXPORT qt_accStripAmp(const QString &text); @@ -724,7 +723,7 @@ QString QAccessibleLineEdit::text(int startOffset, int endOffset) const return lineEdit()->text().mid(startOffset, endOffset - startOffset); } -QString QAccessibleLineEdit::textBeforeOffset(int offset, BoundaryType boundaryType, +QString QAccessibleLineEdit::textBeforeOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const { if (lineEdit()->echoMode() != QLineEdit::Normal) { @@ -734,7 +733,7 @@ QString QAccessibleLineEdit::textBeforeOffset(int offset, BoundaryType boundaryT return QAccessibleTextInterface::textBeforeOffset(offset, boundaryType, startOffset, endOffset); } -QString QAccessibleLineEdit::textAfterOffset(int offset, BoundaryType boundaryType, +QString QAccessibleLineEdit::textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const { if (lineEdit()->echoMode() != QLineEdit::Normal) { @@ -744,7 +743,7 @@ QString QAccessibleLineEdit::textAfterOffset(int offset, BoundaryType boundaryTy return QAccessibleTextInterface::textAfterOffset(offset, boundaryType, startOffset, endOffset); } -QString QAccessibleLineEdit::textAtOffset(int offset, BoundaryType boundaryType, +QString QAccessibleLineEdit::textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const { if (lineEdit()->echoMode() != QLineEdit::Normal) { diff --git a/src/plugins/accessible/widgets/simplewidgets.h b/src/plugins/accessible/widgets/simplewidgets.h index 4701634ca0..f1426354f1 100644 --- a/src/plugins/accessible/widgets/simplewidgets.h +++ b/src/plugins/accessible/widgets/simplewidgets.h @@ -156,11 +156,11 @@ public: int offsetAtPoint(const QPoint &point) const; void selection(int selectionIndex, int *startOffset, int *endOffset) const; QString text(int startOffset, int endOffset) const; - QString textBeforeOffset (int offset, QAccessible2::BoundaryType boundaryType, + QString textBeforeOffset (int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const; - QString textAfterOffset(int offset, QAccessible2::BoundaryType boundaryType, + QString textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const; - QString textAtOffset(int offset, QAccessible2::BoundaryType boundaryType, + QString textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const; void removeSelection(int selectionIndex); void setCursorPosition(int position); diff --git a/src/plugins/platforms/windows/accessible/iaccessible2.cpp b/src/plugins/platforms/windows/accessible/iaccessible2.cpp index b1afd7aca3..7a28fd9074 100644 --- a/src/plugins/platforms/windows/accessible/iaccessible2.cpp +++ b/src/plugins/platforms/windows/accessible/iaccessible2.cpp @@ -1354,7 +1354,7 @@ HRESULT STDMETHODCALLTYPE QWindowsIA2Accessible::get_textBeforeOffset(long offse QAccessibleInterface *accessible = accessibleInterface(); accessibleDebugClientCalls(accessible); if (QAccessibleTextInterface *textIface = textInterface()) { - const QString txt = textIface->textBeforeOffset(offset, (QAccessible2::BoundaryType)boundaryType, (int*)startOffset, (int*)endOffset); + const QString txt = textIface->textBeforeOffset(offset, (QAccessible::TextBoundaryType)boundaryType, (int*)startOffset, (int*)endOffset); if (!txt.isEmpty()) { *text = QStringToBSTR(txt); return S_OK; @@ -1374,7 +1374,7 @@ HRESULT STDMETHODCALLTYPE QWindowsIA2Accessible::get_textAfterOffset( QAccessibleInterface *accessible = accessibleInterface(); accessibleDebugClientCalls(accessible); if (QAccessibleTextInterface *textIface = textInterface()) { - const QString txt = textIface->textAfterOffset(offset, (QAccessible2::BoundaryType)boundaryType, (int*)startOffset, (int*)endOffset); + const QString txt = textIface->textAfterOffset(offset, (QAccessible::TextBoundaryType)boundaryType, (int*)startOffset, (int*)endOffset); if (!txt.isEmpty()) { *text = QStringToBSTR(txt); return S_OK; @@ -1393,7 +1393,7 @@ HRESULT STDMETHODCALLTYPE QWindowsIA2Accessible::get_textAtOffset(long offset, QAccessibleInterface *accessible = accessibleInterface(); accessibleDebugClientCalls(accessible); if (QAccessibleTextInterface *textIface = textInterface()) { - const QString txt = textIface->textAtOffset(offset, (QAccessible2::BoundaryType)boundaryType, (int*)startOffset, (int*)endOffset); + const QString txt = textIface->textAtOffset(offset, (QAccessible::TextBoundaryType)boundaryType, (int*)startOffset, (int*)endOffset); if (!txt.isEmpty()) { *text = QStringToBSTR(txt); return S_OK; diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp index 670beff40b..4e0b3298fc 100644 --- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp +++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp @@ -1644,10 +1644,10 @@ void tst_QAccessibility::textEditTest() QTest::qWaitForWindowShown(&edit); QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(&edit); QCOMPARE(iface->text(QAccessible::Value), edit.toPlainText()); - QCOMPARE(iface->textInterface()->textAtOffset(8, QAccessible2::WordBoundary, &startOffset, &endOffset), QString("world")); + QCOMPARE(iface->textInterface()->textAtOffset(8, QAccessible::WordBoundary, &startOffset, &endOffset), QString("world")); QCOMPARE(startOffset, 6); QCOMPARE(endOffset, 11); - QCOMPARE(iface->textInterface()->textAtOffset(15, QAccessible2::LineBoundary, &startOffset, &endOffset), QString("How are you today?")); + QCOMPARE(iface->textInterface()->textAtOffset(15, QAccessible::LineBoundary, &startOffset, &endOffset), QString("How are you today?")); QCOMPARE(startOffset, 13); QCOMPARE(endOffset, 31); QCOMPARE(iface->textInterface()->characterCount(), 48); @@ -1705,10 +1705,10 @@ void tst_QAccessibility::textBrowserTest() QCOMPARE(iface->text(QAccessible::Value), text); int startOffset; int endOffset; - QCOMPARE(iface->textInterface()->textAtOffset(8, QAccessible2::WordBoundary, &startOffset, &endOffset), QString("world")); + QCOMPARE(iface->textInterface()->textAtOffset(8, QAccessible::WordBoundary, &startOffset, &endOffset), QString("world")); QCOMPARE(startOffset, 6); QCOMPARE(endOffset, 11); - QCOMPARE(iface->textInterface()->textAtOffset(14, QAccessible2::LineBoundary, &startOffset, &endOffset), QString("how are you today?")); + QCOMPARE(iface->textInterface()->textAtOffset(14, QAccessible::LineBoundary, &startOffset, &endOffset), QString("how are you today?")); QCOMPARE(startOffset, 12); QCOMPARE(endOffset, 30); QCOMPARE(iface->textInterface()->characterCount(), 31); @@ -1931,45 +1931,45 @@ void tst_QAccessibility::lineEditTest() int start, end; QCOMPARE(textIface->text(0, 8), QString::fromLatin1("I always")); - QCOMPARE(textIface->textAtOffset(0, QAccessible2::CharBoundary,&start,&end), QString::fromLatin1("I")); + QCOMPARE(textIface->textAtOffset(0, QAccessible::CharBoundary,&start,&end), QString::fromLatin1("I")); QCOMPARE(start, 0); QCOMPARE(end, 1); - QCOMPARE(textIface->textBeforeOffset(0, QAccessible2::CharBoundary,&start,&end), QString()); - QCOMPARE(textIface->textAfterOffset(0, QAccessible2::CharBoundary,&start,&end), QString::fromLatin1(" ")); + QCOMPARE(textIface->textBeforeOffset(0, QAccessible::CharBoundary,&start,&end), QString()); + QCOMPARE(textIface->textAfterOffset(0, QAccessible::CharBoundary,&start,&end), QString::fromLatin1(" ")); QCOMPARE(start, 1); QCOMPARE(end, 2); - QCOMPARE(textIface->textAtOffset(5, QAccessible2::CharBoundary,&start,&end), QString::fromLatin1("a")); + QCOMPARE(textIface->textAtOffset(5, QAccessible::CharBoundary,&start,&end), QString::fromLatin1("a")); QCOMPARE(start, 5); QCOMPARE(end, 6); - QCOMPARE(textIface->textBeforeOffset(5, QAccessible2::CharBoundary,&start,&end), QString::fromLatin1("w")); - QCOMPARE(textIface->textAfterOffset(5, QAccessible2::CharBoundary,&start,&end), QString::fromLatin1("y")); + QCOMPARE(textIface->textBeforeOffset(5, QAccessible::CharBoundary,&start,&end), QString::fromLatin1("w")); + QCOMPARE(textIface->textAfterOffset(5, QAccessible::CharBoundary,&start,&end), QString::fromLatin1("y")); - QCOMPARE(textIface->textAtOffset(5, QAccessible2::WordBoundary,&start,&end), QString::fromLatin1("always")); + QCOMPARE(textIface->textAtOffset(5, QAccessible::WordBoundary,&start,&end), QString::fromLatin1("always")); QCOMPARE(start, 2); QCOMPARE(end, 8); - QCOMPARE(textIface->textAtOffset(2, QAccessible2::WordBoundary,&start,&end), QString::fromLatin1("always")); - QCOMPARE(textIface->textAtOffset(7, QAccessible2::WordBoundary,&start,&end), QString::fromLatin1("always")); - QCOMPARE(textIface->textAtOffset(8, QAccessible2::WordBoundary,&start,&end), QString::fromLatin1(" ")); - QCOMPARE(textIface->textAtOffset(25, QAccessible2::WordBoundary,&start,&end), QString::fromLatin1("advice")); - QCOMPARE(textIface->textAtOffset(92, QAccessible2::WordBoundary,&start,&end), QString::fromLatin1("oneself")); - QCOMPARE(textIface->textAtOffset(101, QAccessible2::WordBoundary,&start,&end), QString::fromLatin1(". --")); + QCOMPARE(textIface->textAtOffset(2, QAccessible::WordBoundary,&start,&end), QString::fromLatin1("always")); + QCOMPARE(textIface->textAtOffset(7, QAccessible::WordBoundary,&start,&end), QString::fromLatin1("always")); + QCOMPARE(textIface->textAtOffset(8, QAccessible::WordBoundary,&start,&end), QString::fromLatin1(" ")); + QCOMPARE(textIface->textAtOffset(25, QAccessible::WordBoundary,&start,&end), QString::fromLatin1("advice")); + QCOMPARE(textIface->textAtOffset(92, QAccessible::WordBoundary,&start,&end), QString::fromLatin1("oneself")); + QCOMPARE(textIface->textAtOffset(101, QAccessible::WordBoundary,&start,&end), QString::fromLatin1(". --")); - QCOMPARE(textIface->textBeforeOffset(5, QAccessible2::WordBoundary,&start,&end), QString::fromLatin1(" ")); - QCOMPARE(textIface->textAfterOffset(5, QAccessible2::WordBoundary,&start,&end), QString::fromLatin1(" ")); - QCOMPARE(textIface->textAtOffset(5, QAccessible2::SentenceBoundary,&start,&end), QString::fromLatin1("I always pass on good advice. ")); + QCOMPARE(textIface->textBeforeOffset(5, QAccessible::WordBoundary,&start,&end), QString::fromLatin1(" ")); + QCOMPARE(textIface->textAfterOffset(5, QAccessible::WordBoundary,&start,&end), QString::fromLatin1(" ")); + QCOMPARE(textIface->textAtOffset(5, QAccessible::SentenceBoundary,&start,&end), QString::fromLatin1("I always pass on good advice. ")); QCOMPARE(start, 0); QCOMPARE(end, 30); - QCOMPARE(textIface->textBeforeOffset(40, QAccessible2::SentenceBoundary,&start,&end), QString::fromLatin1("I always pass on good advice. ")); - QCOMPARE(textIface->textAfterOffset(5, QAccessible2::SentenceBoundary,&start,&end), QString::fromLatin1("It is the only thing to do with it. ")); + QCOMPARE(textIface->textBeforeOffset(40, QAccessible::SentenceBoundary,&start,&end), QString::fromLatin1("I always pass on good advice. ")); + QCOMPARE(textIface->textAfterOffset(5, QAccessible::SentenceBoundary,&start,&end), QString::fromLatin1("It is the only thing to do with it. ")); - QCOMPARE(textIface->textAtOffset(5, QAccessible2::ParagraphBoundary,&start,&end), cite); + QCOMPARE(textIface->textAtOffset(5, QAccessible::ParagraphBoundary,&start,&end), cite); QCOMPARE(start, 0); QCOMPARE(end, cite.length()); - QCOMPARE(textIface->textAtOffset(5, QAccessible2::LineBoundary,&start,&end), cite); - QCOMPARE(textIface->textAtOffset(5, QAccessible2::NoBoundary,&start,&end), cite); + QCOMPARE(textIface->textAtOffset(5, QAccessible::LineBoundary,&start,&end), cite); + QCOMPARE(textIface->textAtOffset(5, QAccessible::NoBoundary,&start,&end), cite); QTestAccessibility::clearEvents(); } -- cgit v1.2.3