Make copy and cut methods work in QAccessibleTextEdit

Correct the implementation of cutText and copyText in QAccessibleTextEdit so
they use cut() and copy() methods of QTextEdit

Cherry picked from Qt 4 - 36202cf8fca822492615d418bd563a40bee4af08

Change-Id: I86a531ed7059b1a928cb8515c2743d4d8b596b36
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
bb10
José Millán Soto 2012-02-07 11:53:31 +01:00 committed by Qt by Nokia
parent 6b807a283c
commit 4c9266fd16
2 changed files with 17 additions and 4 deletions

View File

@ -87,7 +87,7 @@ QList<QWidget*> childWidgets(const QWidget *widget, bool includeTopLevel)
if (!w)
continue;
QString objectName = w->objectName();
if ((includeTopLevel || !w->isWindow())
if ((includeTopLevel || !w->isWindow())
&& !qobject_cast<QFocusFrame*>(w)
&& !qobject_cast<QMenu*>(w)
&& objectName != QLatin1String("qt_rubberband")
@ -483,12 +483,17 @@ static QTextCursor cursorForRange(QTextEdit *textEdit, int startOffset, int endO
void QAccessibleTextEdit::copyText(int startOffset, int endOffset) const
{
#ifndef QT_NO_CLIPBOARD
QTextCursor previousCursor = textEdit()->textCursor();
QTextCursor cursor = cursorForRange(textEdit(), startOffset, endOffset);
if (!cursor.hasSelection())
return;
// QApplication::clipboard()->setMimeData(new QTextEditMimeData(cursor.selection()));
textEdit()->setTextCursor(cursor);
textEdit()->copy();
textEdit()->setTextCursor(previousCursor);
#endif
}
void QAccessibleTextEdit::deleteText(int startOffset, int endOffset)
@ -508,13 +513,15 @@ void QAccessibleTextEdit::insertText(int offset, const QString &text)
void QAccessibleTextEdit::cutText(int startOffset, int endOffset)
{
#ifndef QT_NO_CLIPBOARD
QTextCursor cursor = cursorForRange(textEdit(), startOffset, endOffset);
if (!cursor.hasSelection())
return;
// QApplication::clipboard()->setMimeData(new QTextEditMimeData(cursor.selection()));
cursor.removeSelectedText();
textEdit()->setTextCursor(cursor);
textEdit()->cut();
#endif
}
void QAccessibleTextEdit::pasteText(int offset)

View File

@ -1516,6 +1516,12 @@ void tst_QAccessibility::textEditTest()
QCOMPARE(iface->textInterface()->characterRect(0, QAccessible2::RelativeToParent).size(), QSize(fm.width("h"), fm.height()));
QCOMPARE(iface->textInterface()->characterRect(5, QAccessible2::RelativeToParent).size(), QSize(fm.width(" "), fm.height()));
QCOMPARE(iface->textInterface()->characterRect(6, QAccessible2::RelativeToParent).size(), QSize(fm.width("w"), fm.height()));
iface->editableTextInterface()->copyText(6, 11);
QCOMPARE(QApplication::clipboard()->text(), QLatin1String("world"));
iface->editableTextInterface()->cutText(12, 16);
QCOMPARE(QApplication::clipboard()->text(), QLatin1String("how "));
QCOMPARE(iface->textInterface()->text(12, 15), QLatin1String("are"));
}
QTestAccessibility::clearEvents();
}